@polyester/sdk 0.3.1 → 0.4.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.
- package/CHANGELOG.md +44 -0
- package/README.md +63 -17
- package/dist/account-signer/types.d.ts.map +1 -1
- package/dist/account-signer/types.js +6 -3
- package/dist/account-signer/types.js.map +1 -1
- package/dist/browser-client.d.ts +4 -2
- package/dist/browser-client.d.ts.map +1 -1
- package/dist/browser-client.js +3 -4
- package/dist/browser-client.js.map +1 -1
- package/dist/catalogs/client-catalog.d.ts.map +1 -1
- package/dist/catalogs/client-catalog.js +11 -4
- package/dist/catalogs/client-catalog.js.map +1 -1
- package/dist/catalogs/index.js +1 -1
- package/dist/catalogs/readers.d.ts.map +1 -1
- package/dist/catalogs/readers.js +3 -1
- package/dist/catalogs/readers.js.map +1 -1
- package/dist/catalogs/snapshot-validation.js +132 -0
- package/dist/catalogs/snapshot-validation.js.map +1 -0
- package/dist/catalogs/snapshot.d.ts.map +1 -1
- package/dist/catalogs/snapshot.js +16 -7
- package/dist/catalogs/snapshot.js.map +1 -1
- package/dist/catalogs/zipper-supply.d.ts.map +1 -1
- package/dist/catalogs/zipper-supply.js +10 -7
- package/dist/catalogs/zipper-supply.js.map +1 -1
- package/dist/core-client.d.ts +24 -17
- package/dist/core-client.d.ts.map +1 -1
- package/dist/core-client.js +21 -3
- package/dist/core-client.js.map +1 -1
- package/dist/environment.d.ts.map +1 -1
- package/dist/environment.js +32 -1
- package/dist/environment.js.map +1 -1
- package/dist/index.js +3 -3
- package/dist/realtime/client.js +13 -2
- package/dist/realtime/client.js.map +1 -1
- package/dist/realtime/snapshot-then-stream.js +1 -1
- package/dist/realtime/snapshot-then-stream.js.map +1 -1
- package/dist/realtime/types.d.ts +2 -0
- package/dist/realtime/types.d.ts.map +1 -1
- package/dist/server-client.d.ts +17 -8
- package/dist/server-client.d.ts.map +1 -1
- package/dist/server-client.js +8 -11
- package/dist/server-client.js.map +1 -1
- package/dist/services/accounts/accounts.js +3 -3
- package/dist/services/accounts/accounts.js.map +1 -1
- package/dist/services/address-book/address-book.js +28 -28
- package/dist/services/address-book/address-book.js.map +1 -1
- package/dist/services/address-book/address-book.schemas.d.ts.map +1 -1
- package/dist/services/address-book/address-book.schemas.js +2 -1
- package/dist/services/address-book/address-book.schemas.js.map +1 -1
- package/dist/services/api-keys/api-keys.d.ts.map +1 -1
- package/dist/services/api-keys/api-keys.js +12 -12
- package/dist/services/api-keys/api-keys.js.map +1 -1
- package/dist/services/auth/auth.d.ts +9 -3
- package/dist/services/auth/auth.d.ts.map +1 -1
- package/dist/services/auth/auth.js +11 -7
- package/dist/services/auth/auth.js.map +1 -1
- package/dist/services/auth/profile/profile.d.ts.map +1 -1
- package/dist/services/auth/profile/profile.js +7 -6
- package/dist/services/auth/profile/profile.js.map +1 -1
- package/dist/services/auth/session.d.ts +1 -1
- package/dist/services/auth/session.d.ts.map +1 -1
- package/dist/services/auth/session.js +6 -2
- package/dist/services/auth/session.js.map +1 -1
- package/dist/services/auth/session.types.d.ts +3 -2
- package/dist/services/auth/session.types.d.ts.map +1 -1
- package/dist/services/balances/balances.d.ts +1 -1
- package/dist/services/balances/balances.d.ts.map +1 -1
- package/dist/services/balances/balances.js +9 -8
- package/dist/services/balances/balances.js.map +1 -1
- package/dist/services/balances/balances.schemas.d.ts +1 -1
- package/dist/services/balances/balances.schemas.d.ts.map +1 -1
- package/dist/services/balances/balances.schemas.js +1 -1
- package/dist/services/balances/balances.schemas.js.map +1 -1
- package/dist/services/candles/candles.d.ts.map +1 -1
- package/dist/services/candles/candles.js +10 -9
- package/dist/services/candles/candles.js.map +1 -1
- package/dist/services/candles/candles.schemas.d.ts +11 -11
- package/dist/services/candles/candles.schemas.d.ts.map +1 -1
- package/dist/services/candles/candles.schemas.js +1 -2
- package/dist/services/candles/candles.schemas.js.map +1 -1
- package/dist/services/chain-analytics/chain-analytics.js +7 -7
- package/dist/services/chain-analytics/chain-analytics.js.map +1 -1
- package/dist/services/deposit/deposit.js +5 -5
- package/dist/services/deposit/deposit.js.map +1 -1
- package/dist/services/guard-signer/guard-signer.js +13 -13
- package/dist/services/guard-signer/guard-signer.js.map +1 -1
- package/dist/services/heatmap/heatmap.d.ts.map +1 -1
- package/dist/services/heatmap/heatmap.js +6 -5
- package/dist/services/heatmap/heatmap.js.map +1 -1
- package/dist/services/heatmap/heatmap.schemas.d.ts +17 -17
- package/dist/services/heatmap/heatmap.schemas.js +1 -1
- package/dist/services/heatmap/heatmap.schemas.js.map +1 -1
- package/dist/services/internal-transfers/internal-transfers.js +3 -3
- package/dist/services/internal-transfers/internal-transfers.js.map +1 -1
- package/dist/services/lifecycle/lifecycle.d.ts.map +1 -1
- package/dist/services/lifecycle/lifecycle.js +9 -8
- package/dist/services/lifecycle/lifecycle.js.map +1 -1
- package/dist/services/market-data/market-data.d.ts.map +1 -1
- package/dist/services/market-data/market-data.js +6 -5
- package/dist/services/market-data/market-data.js.map +1 -1
- package/dist/services/market-data/market-data.schemas.d.ts +2 -2
- package/dist/services/market-data/market-data.schemas.d.ts.map +1 -1
- package/dist/services/market-data/market-data.schemas.js +2 -6
- package/dist/services/market-data/market-data.schemas.js.map +1 -1
- package/dist/services/market-overview/market-overview.d.ts.map +1 -1
- package/dist/services/market-overview/market-overview.js +4 -3
- package/dist/services/market-overview/market-overview.js.map +1 -1
- package/dist/services/market-overview/market-overview.schemas.d.ts +3 -3
- package/dist/services/mfa/mfa.js +27 -27
- package/dist/services/mfa/mfa.js.map +1 -1
- package/dist/services/orderbook/orderbook.d.ts.map +1 -1
- package/dist/services/orderbook/orderbook.js +5 -4
- package/dist/services/orderbook/orderbook.js.map +1 -1
- package/dist/services/orderbook/orderbook.schemas.d.ts +1 -1
- package/dist/services/orders/orders-batch.schemas.d.ts +14 -14
- package/dist/services/orders/orders-batch.schemas.js +1 -1
- package/dist/services/orders/orders-input.schemas.d.ts +13 -4
- package/dist/services/orders/orders-input.schemas.d.ts.map +1 -1
- package/dist/services/orders/orders-input.schemas.js +8 -4
- package/dist/services/orders/orders-input.schemas.js.map +1 -1
- package/dist/services/orders/orders-modify.schemas.d.ts +22 -3
- package/dist/services/orders/orders-modify.schemas.d.ts.map +1 -1
- package/dist/services/orders/orders-modify.schemas.js +7 -3
- package/dist/services/orders/orders-modify.schemas.js.map +1 -1
- package/dist/services/orders/orders-output.schemas.d.ts +12 -12
- package/dist/services/orders/orders.d.ts +2 -2
- package/dist/services/orders/orders.d.ts.map +1 -1
- package/dist/services/orders/orders.js +44 -31
- package/dist/services/orders/orders.js.map +1 -1
- package/dist/services/policies/api-key-policies/api-key-policies.d.ts.map +1 -1
- package/dist/services/policies/api-key-policies/api-key-policies.js +11 -11
- package/dist/services/policies/api-key-policies/api-key-policies.js.map +1 -1
- package/dist/services/policies/subaccount-policies/subaccount-policies.d.ts.map +1 -1
- package/dist/services/policies/subaccount-policies/subaccount-policies.js +13 -12
- package/dist/services/policies/subaccount-policies/subaccount-policies.js.map +1 -1
- package/dist/services/social-verification/social-verification.d.ts.map +1 -1
- package/dist/services/social-verification/social-verification.js +7 -7
- package/dist/services/social-verification/social-verification.js.map +1 -1
- package/dist/services/subaccount-resolver.js +5 -3
- package/dist/services/subaccount-resolver.js.map +1 -1
- package/dist/services/subaccounts/subaccounts.d.ts +1 -1
- package/dist/services/subaccounts/subaccounts.d.ts.map +1 -1
- package/dist/services/subaccounts/subaccounts.js +34 -33
- package/dist/services/subaccounts/subaccounts.js.map +1 -1
- package/dist/services/subaccounts/subaccounts.schemas.d.ts +2 -2
- package/dist/services/subaccounts/subaccounts.schemas.js +1 -1
- package/dist/services/subaccounts/subaccounts.schemas.js.map +1 -1
- package/dist/services/trades/trades.d.ts.map +1 -1
- package/dist/services/trades/trades.js +5 -4
- package/dist/services/trades/trades.js.map +1 -1
- package/dist/services/trading-withdraws/trading-withdraws.js +8 -8
- package/dist/services/trading-withdraws/trading-withdraws.js.map +1 -1
- package/dist/services/transfers/transfers.d.ts +1 -1
- package/dist/services/transfers/transfers.d.ts.map +1 -1
- package/dist/services/transfers/transfers.js +5 -4
- package/dist/services/transfers/transfers.js.map +1 -1
- package/dist/services/triggers/trigger-input.schemas.d.ts +1 -1
- package/dist/services/triggers/triggers-output.schemas.d.ts +1 -1
- package/dist/services/triggers/triggers.d.ts.map +1 -1
- package/dist/services/triggers/triggers.js +21 -20
- package/dist/services/triggers/triggers.js.map +1 -1
- package/dist/services/whiteboard/whiteboard.js +15 -15
- package/dist/services/whiteboard/whiteboard.js.map +1 -1
- package/dist/services/zipper/zipper.js +3 -3
- package/dist/services/zipper/zipper.js.map +1 -1
- package/dist/shared/connect-error-mapping.d.ts +1 -1
- package/dist/shared/connect-error-mapping.js +27 -1
- package/dist/shared/connect-error-mapping.js.map +1 -1
- package/dist/shared/transports.js +7 -12
- package/dist/shared/transports.js.map +1 -1
- package/dist/shared/types.d.ts +12 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/validation.js +19 -0
- package/dist/shared/validation.js.map +1 -0
- package/dist/utils/cookies.d.ts +8 -3
- package/dist/utils/cookies.d.ts.map +1 -1
- package/dist/utils/cookies.js +7 -1
- package/dist/utils/cookies.js.map +1 -1
- package/dist/utils/event-emitter.d.ts +1 -1
- package/dist/utils/event-emitter.d.ts.map +1 -1
- package/dist/utils/event-emitter.js +4 -2
- package/dist/utils/event-emitter.js.map +1 -1
- package/dist/utils/evm.js +2 -2
- package/dist/utils/evm.js.map +1 -1
- package/dist/utils/jwt.d.ts +2 -2
- package/dist/utils/jwt.d.ts.map +1 -1
- package/dist/utils/jwt.js +2 -2
- package/dist/utils/jwt.js.map +1 -1
- package/package.json +3 -3
|
@@ -11,7 +11,7 @@ type TimestampInit = {
|
|
|
11
11
|
};
|
|
12
12
|
declare function createCandleRowSchema(scales: SdkScales): v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
13
13
|
readonly symbolId: v.NumberSchema<undefined>;
|
|
14
|
-
readonly timeframe: v.SchemaWithPipe<readonly [v.EnumSchema<typeof Timeframe$1, undefined>, v.TransformAction<Timeframe$1, DecodedEnum<"1d" | "
|
|
14
|
+
readonly timeframe: v.SchemaWithPipe<readonly [v.EnumSchema<typeof Timeframe$1, undefined>, v.TransformAction<Timeframe$1, DecodedEnum<"1d" | "1h" | "1w" | "1m" | "1s" | "5m" | "15m" | "30m" | "4h" | "12h" | "1mo">>]>;
|
|
15
15
|
readonly tsSec: v.BigintSchema<undefined>;
|
|
16
16
|
readonly open: v.BigintSchema<undefined>;
|
|
17
17
|
readonly high: v.BigintSchema<undefined>;
|
|
@@ -21,7 +21,7 @@ declare function createCandleRowSchema(scales: SdkScales): v.SchemaWithPipe<read
|
|
|
21
21
|
readonly isClosed: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
22
22
|
}, undefined>, v.TransformAction<{
|
|
23
23
|
symbolId: number;
|
|
24
|
-
timeframe: DecodedEnum<"1d" | "
|
|
24
|
+
timeframe: DecodedEnum<"1d" | "1h" | "1w" | "1m" | "1s" | "5m" | "15m" | "30m" | "4h" | "12h" | "1mo">;
|
|
25
25
|
tsSec: bigint;
|
|
26
26
|
open: bigint;
|
|
27
27
|
high: bigint;
|
|
@@ -31,7 +31,7 @@ declare function createCandleRowSchema(scales: SdkScales): v.SchemaWithPipe<read
|
|
|
31
31
|
isClosed: boolean;
|
|
32
32
|
}, {
|
|
33
33
|
symbolId: number;
|
|
34
|
-
timeframe: DecodedEnum<"1d" | "
|
|
34
|
+
timeframe: DecodedEnum<"1d" | "1h" | "1w" | "1m" | "1s" | "5m" | "15m" | "30m" | "4h" | "12h" | "1mo">;
|
|
35
35
|
time: number;
|
|
36
36
|
open: string;
|
|
37
37
|
high: string;
|
|
@@ -43,7 +43,7 @@ declare function createCandleRowSchema(scales: SdkScales): v.SchemaWithPipe<read
|
|
|
43
43
|
declare const createCandleRowIntSchema: typeof createCandleRowSchema;
|
|
44
44
|
declare function createCandleColumnarSchema(scales: SdkScales): v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
45
45
|
readonly symbolId: v.NumberSchema<undefined>;
|
|
46
|
-
readonly timeframe: v.SchemaWithPipe<readonly [v.EnumSchema<typeof Timeframe$1, undefined>, v.TransformAction<Timeframe$1, DecodedEnum<"1d" | "
|
|
46
|
+
readonly timeframe: v.SchemaWithPipe<readonly [v.EnumSchema<typeof Timeframe$1, undefined>, v.TransformAction<Timeframe$1, DecodedEnum<"1d" | "1h" | "1w" | "1m" | "1s" | "5m" | "15m" | "30m" | "4h" | "12h" | "1mo">>]>;
|
|
47
47
|
readonly tsSec: v.ArraySchema<v.BigintSchema<undefined>, undefined>;
|
|
48
48
|
readonly open: v.ArraySchema<v.BigintSchema<undefined>, undefined>;
|
|
49
49
|
readonly high: v.ArraySchema<v.BigintSchema<undefined>, undefined>;
|
|
@@ -59,7 +59,7 @@ declare function createCandleColumnarSchema(scales: SdkScales): v.SchemaWithPipe
|
|
|
59
59
|
readonly nextPageToken: v.OptionalSchema<v.StringSchema<undefined>, "">;
|
|
60
60
|
}, undefined>, v.TransformAction<{
|
|
61
61
|
symbolId: number;
|
|
62
|
-
timeframe: DecodedEnum<"1d" | "
|
|
62
|
+
timeframe: DecodedEnum<"1d" | "1h" | "1w" | "1m" | "1s" | "5m" | "15m" | "30m" | "4h" | "12h" | "1mo">;
|
|
63
63
|
tsSec: bigint[];
|
|
64
64
|
open: bigint[];
|
|
65
65
|
high: bigint[];
|
|
@@ -75,7 +75,7 @@ declare function createCandleColumnarSchema(scales: SdkScales): v.SchemaWithPipe
|
|
|
75
75
|
nextPageToken: string;
|
|
76
76
|
}, {
|
|
77
77
|
symbolId: number;
|
|
78
|
-
timeframe: DecodedEnum<"1d" | "
|
|
78
|
+
timeframe: DecodedEnum<"1d" | "1h" | "1w" | "1m" | "1s" | "5m" | "15m" | "30m" | "4h" | "12h" | "1mo">;
|
|
79
79
|
time: number[];
|
|
80
80
|
open: string[];
|
|
81
81
|
high: string[];
|
|
@@ -94,7 +94,7 @@ declare function createCandleColumnarSchema(scales: SdkScales): v.SchemaWithPipe
|
|
|
94
94
|
}>]>;
|
|
95
95
|
declare function createCandleColumnarIntSchema(scales: SdkScales): v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
96
96
|
readonly symbolId: v.NumberSchema<undefined>;
|
|
97
|
-
readonly timeframe: v.SchemaWithPipe<readonly [v.EnumSchema<typeof Timeframe$1, undefined>, v.TransformAction<Timeframe$1, DecodedEnum<"1d" | "
|
|
97
|
+
readonly timeframe: v.SchemaWithPipe<readonly [v.EnumSchema<typeof Timeframe$1, undefined>, v.TransformAction<Timeframe$1, DecodedEnum<"1d" | "1h" | "1w" | "1m" | "1s" | "5m" | "15m" | "30m" | "4h" | "12h" | "1mo">>]>;
|
|
98
98
|
readonly tsSec: v.ArraySchema<v.BigintSchema<undefined>, undefined>;
|
|
99
99
|
readonly open: v.ArraySchema<v.BigintSchema<undefined>, undefined>;
|
|
100
100
|
readonly high: v.ArraySchema<v.BigintSchema<undefined>, undefined>;
|
|
@@ -110,7 +110,7 @@ declare function createCandleColumnarIntSchema(scales: SdkScales): v.SchemaWithP
|
|
|
110
110
|
readonly nextPageToken: v.OptionalSchema<v.StringSchema<undefined>, "">;
|
|
111
111
|
}, undefined>, v.TransformAction<{
|
|
112
112
|
symbolId: number;
|
|
113
|
-
timeframe: DecodedEnum<"1d" | "
|
|
113
|
+
timeframe: DecodedEnum<"1d" | "1h" | "1w" | "1m" | "1s" | "5m" | "15m" | "30m" | "4h" | "12h" | "1mo">;
|
|
114
114
|
tsSec: bigint[];
|
|
115
115
|
open: bigint[];
|
|
116
116
|
high: bigint[];
|
|
@@ -126,7 +126,7 @@ declare function createCandleColumnarIntSchema(scales: SdkScales): v.SchemaWithP
|
|
|
126
126
|
nextPageToken: string;
|
|
127
127
|
}, {
|
|
128
128
|
symbolId: number;
|
|
129
|
-
timeframe: DecodedEnum<"1d" | "
|
|
129
|
+
timeframe: DecodedEnum<"1d" | "1h" | "1w" | "1m" | "1s" | "5m" | "15m" | "30m" | "4h" | "12h" | "1mo">;
|
|
130
130
|
tsSec: number[];
|
|
131
131
|
open: string[];
|
|
132
132
|
high: string[];
|
|
@@ -149,8 +149,8 @@ type CandleColumnar = v.InferOutput<ReturnType<typeof createCandleColumnarSchema
|
|
|
149
149
|
type CandleColumnarInt = v.InferOutput<ReturnType<typeof createCandleColumnarIntSchema>>;
|
|
150
150
|
declare function createListCandlesInputSchema(): v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
151
151
|
readonly symbolId: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.GtValueAction<number, 0, undefined>]>;
|
|
152
|
-
readonly timeframe: v.SchemaWithPipe<readonly [v.PicklistSchema<readonly ["1s", "1m", "5m", "15m", "30m", "1h", "4h", "12h", "1d", "1w", "1mo"], undefined>, v.TransformAction<"1d" | "
|
|
153
|
-
readonly limit: v.
|
|
152
|
+
readonly timeframe: v.SchemaWithPipe<readonly [v.PicklistSchema<readonly ["1s", "1m", "5m", "15m", "30m", "1h", "4h", "12h", "1d", "1w", "1mo"], undefined>, v.TransformAction<"1d" | "1h" | "1w" | "1m" | "1s" | "5m" | "15m" | "30m" | "4h" | "12h" | "1mo", Timeframe$1.SEC_1 | Timeframe$1.MIN_1 | Timeframe$1.MIN_5 | Timeframe$1.MIN_15 | Timeframe$1.MIN_30 | Timeframe$1.HOUR_1 | Timeframe$1.HOUR_4 | Timeframe$1.DAY_1 | Timeframe$1.HOUR_12 | Timeframe$1.WEEK_1 | Timeframe$1.MONTH_1>]>;
|
|
153
|
+
readonly limit: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.GtValueAction<number, 0, undefined>, v.MaxValueAction<number, 10000, undefined>]>, undefined>;
|
|
154
154
|
readonly includeIncomplete: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
155
155
|
readonly includeReference: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
156
156
|
readonly startTsSec: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, number, undefined>, v.TransformAction<number, bigint>]>, undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candles.schemas.d.ts","names":[],"sources":["../../../src/services/candles/candles.schemas.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"candles.schemas.d.ts","names":[],"sources":["../../../src/services/candles/candles.schemas.ts"],"mappings":";;;;;cAQa,iBAAe,EAAA;KAEhB,YAAY,EAAE,mBAAmB;KAsBxC;EAAkB;EAAiB;;iBAqBxB,sBAAsB,QAAQ,YAAS,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAoB1C,iCAAwB;iBAqCrB,2BAA2B,QAAQ,YAAS,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiC5C,8BAA8B,QAAQ,YAAS,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAiCnD,SAAS,EAAE,YAAY,kBAAkB;KAGzC,YAAY,EAAE,YAAY,kBAAkB;KAC5C,iBAAiB,EAAE,YAAY,kBAAkB;KAGjD,oBAAoB,EAAE,YAAY,kBAAkB;iBAyBhD,gCAA4B,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAIhC,kBAAkB,EAAE,WAAW,kBAAkB;KAEjD,yBAAyB,EAAE,WAAW,kBAAkB"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { requiredEnumLabel } from "../../shared/proto-enum-codec.js";
|
|
2
|
-
import { parseOptionalPositiveIntLike } from "../../utils/numbers.js";
|
|
3
2
|
import { OptionalTimestampSecondsInputSchema } from "../../shared/schemas.js";
|
|
4
3
|
import { Timeframe } from "../../gen/marketdata/v1/marketdata_pb.js";
|
|
5
4
|
import { scaledToDecimalOutput } from "../../shared/decimal-surface.js";
|
|
@@ -11,7 +10,7 @@ function timeframeFromProto(value, schemaName) {
|
|
|
11
10
|
return requiredEnumLabel(TimeframeCodec.protoToOutput, value, `CandlesService.${schemaName}`, "timeframe");
|
|
12
11
|
}
|
|
13
12
|
const TimeframeInputSchema = v.pipe(TimeframeSchema, v.transform((value) => TimeframeCodec.inputToProto[value]));
|
|
14
|
-
const OptionalPositiveNumberSchema = v.
|
|
13
|
+
const OptionalPositiveNumberSchema = v.optional(v.pipe(v.number(), v.integer(), v.gtValue(0), v.maxValue(1e4)));
|
|
15
14
|
const OptionalBooleanSchema = v.optional(v.boolean(), false);
|
|
16
15
|
function timestampFromTsSec(tsSec) {
|
|
17
16
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candles.schemas.js","names":["Proto.Timeframe"],"sources":["../../../src/services/candles/candles.schemas.ts"],"sourcesContent":["import * as Proto from \"../../gen/marketdata/v1/marketdata_pb.js\";\nimport * as v from \"valibot\";\nimport { parseOptionalPositiveIntLike } from \"../../utils/numbers.js\";\nimport type { DecodedEnum } from \"../../utils/types.js\";\nimport { OptionalTimestampSecondsInputSchema } from \"../../shared/schemas.js\";\nimport { requiredEnumLabel } from \"../../shared/proto-enum-codec.js\";\nimport { scaledToDecimalOutput, type SdkScales } from \"../../shared/decimal-surface.js\";\nimport { TIMEFRAMES, TimeframeCodec } from \"./candles.codecs.js\";\n\nexport const TimeframeSchema = v.picklist(TIMEFRAMES);\n\nexport type Timeframe = v.InferOutput<typeof TimeframeSchema>;\n\nfunction timeframeFromProto(value: Proto.Timeframe, schemaName: string): DecodedEnum<Timeframe> {\n return requiredEnumLabel(\n TimeframeCodec.protoToOutput,\n value,\n `CandlesService.${schemaName}`,\n \"timeframe\",\n );\n}\n\nconst TimeframeInputSchema = v.pipe(\n TimeframeSchema,\n v.transform((value) => TimeframeCodec.inputToProto[value]),\n);\n\nconst OptionalPositiveNumberSchema = v.pipe(\n v.optional(v.union([v.string(), v.number()])),\n v.transform((value) => parseOptionalPositiveIntLike(value)),\n);\n\nconst OptionalBooleanSchema = v.optional(v.boolean(), false);\n\ntype TimestampInit = { seconds: bigint; nanos: number };\n\nfunction timestampFromTsSec(tsSec: bigint): TimestampInit {\n return { seconds: tsSec, nanos: 0 };\n}\n\nconst CandleRowRawSchema = v.object({\n symbolId: v.number(),\n timeframe: v.pipe(\n v.enum(Proto.Timeframe),\n v.transform((v) => timeframeFromProto(v, \"CandleRowSchema\")),\n ),\n tsSec: v.bigint(),\n open: v.bigint(),\n high: v.bigint(),\n low: v.bigint(),\n close: v.bigint(),\n volume: v.bigint(),\n isClosed: v.optional(v.boolean(), false),\n});\n\nexport function createCandleRowSchema(scales: SdkScales) {\n return v.pipe(\n CandleRowRawSchema,\n v.transform((data) => {\n const priceScale = scales.price();\n return {\n symbolId: data.symbolId,\n timeframe: data.timeframe,\n time: Number(data.tsSec),\n open: scaledToDecimalOutput(data.open, priceScale),\n high: scaledToDecimalOutput(data.high, priceScale),\n low: scaledToDecimalOutput(data.low, priceScale),\n close: scaledToDecimalOutput(data.close, priceScale),\n volume: scaledToDecimalOutput(data.volume, scales.baseQty(data.symbolId)),\n isClosed: data.isClosed,\n };\n }),\n );\n}\n\nexport const createCandleRowIntSchema = createCandleRowSchema;\n\nexport const CandlePointSchema = v.object({\n tsSec: v.bigint(),\n open: v.bigint(),\n high: v.bigint(),\n low: v.bigint(),\n close: v.bigint(),\n volume: v.bigint(),\n isClosed: v.optional(v.boolean(), false),\n});\n\nconst CandleColumnarRawSchema = v.object({\n symbolId: v.number(),\n timeframe: v.pipe(\n v.enum(Proto.Timeframe),\n v.transform((v) => timeframeFromProto(v, \"CandleColumnarSchema\")),\n ),\n tsSec: v.array(v.bigint()),\n open: v.array(v.bigint()),\n high: v.array(v.bigint()),\n low: v.array(v.bigint()),\n close: v.array(v.bigint()),\n volume: v.array(v.bigint()),\n referenceTsSec: v.optional(v.array(v.bigint()), []),\n referenceOpen: v.optional(v.array(v.bigint()), []),\n referenceHigh: v.optional(v.array(v.bigint()), []),\n referenceLow: v.optional(v.array(v.bigint()), []),\n referenceClose: v.optional(v.array(v.bigint()), []),\n referenceVolume: v.optional(v.array(v.bigint()), []),\n nextPageToken: v.optional(v.string(), \"\"),\n});\n\nfunction scaledArrayToDecimal(values: bigint[], scale: number): string[] {\n return values.map((value) => scaledToDecimalOutput(value, scale));\n}\n\nexport function createCandleColumnarSchema(scales: SdkScales) {\n return v.pipe(\n CandleColumnarRawSchema,\n v.transform((d) => {\n const priceScale = scales.price();\n const volumeScale = scales.baseQty(d.symbolId);\n const referenceTsSec = d.referenceTsSec ?? [];\n const hasReference = referenceTsSec.length > 0;\n return {\n symbolId: d.symbolId,\n timeframe: d.timeframe,\n time: d.tsSec.map((t) => Number(t)),\n open: scaledArrayToDecimal(d.open, priceScale),\n high: scaledArrayToDecimal(d.high, priceScale),\n low: scaledArrayToDecimal(d.low, priceScale),\n close: scaledArrayToDecimal(d.close, priceScale),\n volume: scaledArrayToDecimal(d.volume, volumeScale),\n nextPageToken: d.nextPageToken,\n reference: hasReference\n ? {\n time: referenceTsSec.map((t) => Number(t)),\n open: scaledArrayToDecimal(d.referenceOpen ?? [], priceScale),\n high: scaledArrayToDecimal(d.referenceHigh ?? [], priceScale),\n low: scaledArrayToDecimal(d.referenceLow ?? [], priceScale),\n close: scaledArrayToDecimal(d.referenceClose ?? [], priceScale),\n volume: scaledArrayToDecimal(d.referenceVolume ?? [], volumeScale),\n }\n : null,\n };\n }),\n );\n}\n\nexport function createCandleColumnarIntSchema(scales: SdkScales) {\n return v.pipe(\n CandleColumnarRawSchema,\n v.transform((d) => {\n const priceScale = scales.price();\n const volumeScale = scales.baseQty(d.symbolId);\n const referenceTsSec = d.referenceTsSec ?? [];\n return {\n symbolId: d.symbolId,\n timeframe: d.timeframe,\n tsSec: d.tsSec.map((t) => Number(t)),\n open: scaledArrayToDecimal(d.open, priceScale),\n high: scaledArrayToDecimal(d.high, priceScale),\n low: scaledArrayToDecimal(d.low, priceScale),\n close: scaledArrayToDecimal(d.close, priceScale),\n volume: scaledArrayToDecimal(d.volume, volumeScale),\n nextPageToken: d.nextPageToken,\n reference:\n referenceTsSec.length > 0\n ? {\n tsSec: referenceTsSec.map((t) => Number(t)),\n open: scaledArrayToDecimal(d.referenceOpen ?? [], priceScale),\n high: scaledArrayToDecimal(d.referenceHigh ?? [], priceScale),\n low: scaledArrayToDecimal(d.referenceLow ?? [], priceScale),\n close: scaledArrayToDecimal(d.referenceClose ?? [], priceScale),\n volume: scaledArrayToDecimal(d.referenceVolume ?? [], volumeScale),\n }\n : null,\n };\n }),\n );\n}\n\nexport type Candle = v.InferOutput<ReturnType<typeof createCandleRowSchema>>;\nexport type CandleInput = v.InferInput<ReturnType<typeof createCandleRowSchema>>;\nexport type CandleIntInput = v.InferInput<ReturnType<typeof createCandleRowIntSchema>>;\nexport type CandleInt = v.InferOutput<ReturnType<typeof createCandleRowIntSchema>>;\nexport type CandleColumnar = v.InferOutput<ReturnType<typeof createCandleColumnarSchema>>;\nexport type CandleColumnarInput = v.InferInput<ReturnType<typeof createCandleColumnarSchema>>;\nexport type CandleColumnarIntInput = v.InferInput<ReturnType<typeof createCandleColumnarIntSchema>>;\nexport type CandleColumnarInt = v.InferOutput<ReturnType<typeof createCandleColumnarIntSchema>>;\n\nexport const ListCandlesInputSchema = v.pipe(\n v.object({\n symbolId: v.pipe(v.number(), v.integer(), v.gtValue(0)),\n timeframe: TimeframeInputSchema,\n limit: OptionalPositiveNumberSchema,\n includeIncomplete: v.optional(v.boolean(), false),\n includeReference: OptionalBooleanSchema,\n startTsSec: OptionalTimestampSecondsInputSchema,\n endTsSec: OptionalTimestampSecondsInputSchema,\n pageToken: v.optional(v.pipe(v.string(), v.trim()), \"\"),\n }),\n v.transform((d) => ({\n symbolId: d.symbolId,\n timeframe: d.timeframe,\n limit: d.limit,\n includeIncomplete: d.includeIncomplete,\n includeReference: d.includeReference,\n startTime: d.startTsSec != null ? timestampFromTsSec(d.startTsSec) : undefined,\n endTime: d.endTsSec != null ? timestampFromTsSec(d.endTsSec) : undefined,\n pageToken: d.pageToken,\n })),\n);\n\nexport function createListCandlesInputSchema() {\n return ListCandlesInputSchema;\n}\n\nexport type GetCandlesInput = v.InferInput<ReturnType<typeof createListCandlesInputSchema>>;\nexport const createGetCandlesColumnsInputSchema = createListCandlesInputSchema;\nexport type GetCandlesColumnsInput = v.InferInput<ReturnType<typeof createListCandlesInputSchema>>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"candles.schemas.js","names":["Proto.Timeframe"],"sources":["../../../src/services/candles/candles.schemas.ts"],"sourcesContent":["import * as Proto from \"../../gen/marketdata/v1/marketdata_pb.js\";\nimport * as v from \"valibot\";\nimport type { DecodedEnum } from \"../../utils/types.js\";\nimport { OptionalTimestampSecondsInputSchema } from \"../../shared/schemas.js\";\nimport { requiredEnumLabel } from \"../../shared/proto-enum-codec.js\";\nimport { scaledToDecimalOutput, type SdkScales } from \"../../shared/decimal-surface.js\";\nimport { TIMEFRAMES, TimeframeCodec } from \"./candles.codecs.js\";\n\nexport const TimeframeSchema = v.picklist(TIMEFRAMES);\n\nexport type Timeframe = v.InferOutput<typeof TimeframeSchema>;\n\nfunction timeframeFromProto(value: Proto.Timeframe, schemaName: string): DecodedEnum<Timeframe> {\n return requiredEnumLabel(\n TimeframeCodec.protoToOutput,\n value,\n `CandlesService.${schemaName}`,\n \"timeframe\",\n );\n}\n\nconst TimeframeInputSchema = v.pipe(\n TimeframeSchema,\n v.transform((value) => TimeframeCodec.inputToProto[value]),\n);\n\nconst OptionalPositiveNumberSchema = v.optional(\n v.pipe(v.number(), v.integer(), v.gtValue(0), v.maxValue(10_000)),\n);\n\nconst OptionalBooleanSchema = v.optional(v.boolean(), false);\n\ntype TimestampInit = { seconds: bigint; nanos: number };\n\nfunction timestampFromTsSec(tsSec: bigint): TimestampInit {\n return { seconds: tsSec, nanos: 0 };\n}\n\nconst CandleRowRawSchema = v.object({\n symbolId: v.number(),\n timeframe: v.pipe(\n v.enum(Proto.Timeframe),\n v.transform((v) => timeframeFromProto(v, \"CandleRowSchema\")),\n ),\n tsSec: v.bigint(),\n open: v.bigint(),\n high: v.bigint(),\n low: v.bigint(),\n close: v.bigint(),\n volume: v.bigint(),\n isClosed: v.optional(v.boolean(), false),\n});\n\nexport function createCandleRowSchema(scales: SdkScales) {\n return v.pipe(\n CandleRowRawSchema,\n v.transform((data) => {\n const priceScale = scales.price();\n return {\n symbolId: data.symbolId,\n timeframe: data.timeframe,\n time: Number(data.tsSec),\n open: scaledToDecimalOutput(data.open, priceScale),\n high: scaledToDecimalOutput(data.high, priceScale),\n low: scaledToDecimalOutput(data.low, priceScale),\n close: scaledToDecimalOutput(data.close, priceScale),\n volume: scaledToDecimalOutput(data.volume, scales.baseQty(data.symbolId)),\n isClosed: data.isClosed,\n };\n }),\n );\n}\n\nexport const createCandleRowIntSchema = createCandleRowSchema;\n\nexport const CandlePointSchema = v.object({\n tsSec: v.bigint(),\n open: v.bigint(),\n high: v.bigint(),\n low: v.bigint(),\n close: v.bigint(),\n volume: v.bigint(),\n isClosed: v.optional(v.boolean(), false),\n});\n\nconst CandleColumnarRawSchema = v.object({\n symbolId: v.number(),\n timeframe: v.pipe(\n v.enum(Proto.Timeframe),\n v.transform((v) => timeframeFromProto(v, \"CandleColumnarSchema\")),\n ),\n tsSec: v.array(v.bigint()),\n open: v.array(v.bigint()),\n high: v.array(v.bigint()),\n low: v.array(v.bigint()),\n close: v.array(v.bigint()),\n volume: v.array(v.bigint()),\n referenceTsSec: v.optional(v.array(v.bigint()), []),\n referenceOpen: v.optional(v.array(v.bigint()), []),\n referenceHigh: v.optional(v.array(v.bigint()), []),\n referenceLow: v.optional(v.array(v.bigint()), []),\n referenceClose: v.optional(v.array(v.bigint()), []),\n referenceVolume: v.optional(v.array(v.bigint()), []),\n nextPageToken: v.optional(v.string(), \"\"),\n});\n\nfunction scaledArrayToDecimal(values: bigint[], scale: number): string[] {\n return values.map((value) => scaledToDecimalOutput(value, scale));\n}\n\nexport function createCandleColumnarSchema(scales: SdkScales) {\n return v.pipe(\n CandleColumnarRawSchema,\n v.transform((d) => {\n const priceScale = scales.price();\n const volumeScale = scales.baseQty(d.symbolId);\n const referenceTsSec = d.referenceTsSec ?? [];\n const hasReference = referenceTsSec.length > 0;\n return {\n symbolId: d.symbolId,\n timeframe: d.timeframe,\n time: d.tsSec.map((t) => Number(t)),\n open: scaledArrayToDecimal(d.open, priceScale),\n high: scaledArrayToDecimal(d.high, priceScale),\n low: scaledArrayToDecimal(d.low, priceScale),\n close: scaledArrayToDecimal(d.close, priceScale),\n volume: scaledArrayToDecimal(d.volume, volumeScale),\n nextPageToken: d.nextPageToken,\n reference: hasReference\n ? {\n time: referenceTsSec.map((t) => Number(t)),\n open: scaledArrayToDecimal(d.referenceOpen ?? [], priceScale),\n high: scaledArrayToDecimal(d.referenceHigh ?? [], priceScale),\n low: scaledArrayToDecimal(d.referenceLow ?? [], priceScale),\n close: scaledArrayToDecimal(d.referenceClose ?? [], priceScale),\n volume: scaledArrayToDecimal(d.referenceVolume ?? [], volumeScale),\n }\n : null,\n };\n }),\n );\n}\n\nexport function createCandleColumnarIntSchema(scales: SdkScales) {\n return v.pipe(\n CandleColumnarRawSchema,\n v.transform((d) => {\n const priceScale = scales.price();\n const volumeScale = scales.baseQty(d.symbolId);\n const referenceTsSec = d.referenceTsSec ?? [];\n return {\n symbolId: d.symbolId,\n timeframe: d.timeframe,\n tsSec: d.tsSec.map((t) => Number(t)),\n open: scaledArrayToDecimal(d.open, priceScale),\n high: scaledArrayToDecimal(d.high, priceScale),\n low: scaledArrayToDecimal(d.low, priceScale),\n close: scaledArrayToDecimal(d.close, priceScale),\n volume: scaledArrayToDecimal(d.volume, volumeScale),\n nextPageToken: d.nextPageToken,\n reference:\n referenceTsSec.length > 0\n ? {\n tsSec: referenceTsSec.map((t) => Number(t)),\n open: scaledArrayToDecimal(d.referenceOpen ?? [], priceScale),\n high: scaledArrayToDecimal(d.referenceHigh ?? [], priceScale),\n low: scaledArrayToDecimal(d.referenceLow ?? [], priceScale),\n close: scaledArrayToDecimal(d.referenceClose ?? [], priceScale),\n volume: scaledArrayToDecimal(d.referenceVolume ?? [], volumeScale),\n }\n : null,\n };\n }),\n );\n}\n\nexport type Candle = v.InferOutput<ReturnType<typeof createCandleRowSchema>>;\nexport type CandleInput = v.InferInput<ReturnType<typeof createCandleRowSchema>>;\nexport type CandleIntInput = v.InferInput<ReturnType<typeof createCandleRowIntSchema>>;\nexport type CandleInt = v.InferOutput<ReturnType<typeof createCandleRowIntSchema>>;\nexport type CandleColumnar = v.InferOutput<ReturnType<typeof createCandleColumnarSchema>>;\nexport type CandleColumnarInput = v.InferInput<ReturnType<typeof createCandleColumnarSchema>>;\nexport type CandleColumnarIntInput = v.InferInput<ReturnType<typeof createCandleColumnarIntSchema>>;\nexport type CandleColumnarInt = v.InferOutput<ReturnType<typeof createCandleColumnarIntSchema>>;\n\nexport const ListCandlesInputSchema = v.pipe(\n v.object({\n symbolId: v.pipe(v.number(), v.integer(), v.gtValue(0)),\n timeframe: TimeframeInputSchema,\n limit: OptionalPositiveNumberSchema,\n includeIncomplete: v.optional(v.boolean(), false),\n includeReference: OptionalBooleanSchema,\n startTsSec: OptionalTimestampSecondsInputSchema,\n endTsSec: OptionalTimestampSecondsInputSchema,\n pageToken: v.optional(v.pipe(v.string(), v.trim()), \"\"),\n }),\n v.transform((d) => ({\n symbolId: d.symbolId,\n timeframe: d.timeframe,\n limit: d.limit,\n includeIncomplete: d.includeIncomplete,\n includeReference: d.includeReference,\n startTime: d.startTsSec != null ? timestampFromTsSec(d.startTsSec) : undefined,\n endTime: d.endTsSec != null ? timestampFromTsSec(d.endTsSec) : undefined,\n pageToken: d.pageToken,\n })),\n);\n\nexport function createListCandlesInputSchema() {\n return ListCandlesInputSchema;\n}\n\nexport type GetCandlesInput = v.InferInput<ReturnType<typeof createListCandlesInputSchema>>;\nexport const createGetCandlesColumnsInputSchema = createListCandlesInputSchema;\nexport type GetCandlesColumnsInput = v.InferInput<ReturnType<typeof createListCandlesInputSchema>>;\n"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { parse } from "../../shared/validation.js";
|
|
1
2
|
import { toConnectCallOptions } from "../../shared/request-options.js";
|
|
2
3
|
import { ChainAnalyticsService as ChainAnalyticsService$1 } from "../../gen/chain/analytics/v1/analytics_read_pb.js";
|
|
3
4
|
import { GetUnifiedAssetBalancesInputSchema, GetZippedAssetSupplyGroupInputSchema, GetZippedAssetSupplyInputSchema, createUnifiedAssetBalancesResponseSchema, createZippedAssetSupplyGroupResponseSchema, createZippedAssetSupplyResponseSchema } from "./chain-analytics.schemas.js";
|
|
4
5
|
import { createClient } from "@connectrpc/connect";
|
|
5
|
-
import * as v from "valibot";
|
|
6
6
|
//#region src/services/chain-analytics/chain-analytics.ts
|
|
7
7
|
/**
|
|
8
8
|
* Reads public chain analytics chart series.
|
|
@@ -18,28 +18,28 @@ var ChainAnalyticsService = class {
|
|
|
18
18
|
* Returns route-scoped zToken supply chart columns for one zipped asset.
|
|
19
19
|
*/
|
|
20
20
|
async getZippedAssetSupply(input, options) {
|
|
21
|
-
const parsedInput =
|
|
21
|
+
const parsedInput = parse(GetZippedAssetSupplyInputSchema, input);
|
|
22
22
|
await this.#scales.ready();
|
|
23
23
|
const response = await this.#client.getZippedAssetSupply(parsedInput, toConnectCallOptions(options));
|
|
24
|
-
return
|
|
24
|
+
return parse(createZippedAssetSupplyResponseSchema(this.#scales), response);
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
27
|
* Returns grouped zToken supply chart columns for all zipped assets in one group.
|
|
28
28
|
*/
|
|
29
29
|
async getZippedAssetSupplyGroup(input, options) {
|
|
30
|
-
const parsedInput =
|
|
30
|
+
const parsedInput = parse(GetZippedAssetSupplyGroupInputSchema, input);
|
|
31
31
|
await this.#scales.ready();
|
|
32
32
|
const response = await this.#client.getZippedAssetSupplyGroup(parsedInput, toConnectCallOptions(options));
|
|
33
|
-
return
|
|
33
|
+
return parse(createZippedAssetSupplyGroupResponseSchema(this.#scales), response);
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
36
|
* Returns total public unified-asset balance chart columns.
|
|
37
37
|
*/
|
|
38
38
|
async getUnifiedAssetBalances(input, options) {
|
|
39
|
-
const parsedInput =
|
|
39
|
+
const parsedInput = parse(GetUnifiedAssetBalancesInputSchema, input);
|
|
40
40
|
await this.#scales.ready();
|
|
41
41
|
const response = await this.#client.getUnifiedAssetBalances(parsedInput, toConnectCallOptions(options));
|
|
42
|
-
return
|
|
42
|
+
return parse(createUnifiedAssetBalancesResponseSchema(this.#scales), response);
|
|
43
43
|
}
|
|
44
44
|
};
|
|
45
45
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain-analytics.js","names":["#client","Proto.ChainAnalyticsService","#scales"],"sources":["../../../src/services/chain-analytics/chain-analytics.ts"],"sourcesContent":["import * as Proto from \"../../gen/chain/analytics/v1/analytics_read_pb.js\";\nimport { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport {\n toConnectCallOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport type { SdkScales } from \"../../shared/decimal-surface.js\";\nimport
|
|
1
|
+
{"version":3,"file":"chain-analytics.js","names":["#client","Proto.ChainAnalyticsService","#scales"],"sources":["../../../src/services/chain-analytics/chain-analytics.ts"],"sourcesContent":["import * as Proto from \"../../gen/chain/analytics/v1/analytics_read_pb.js\";\nimport { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport {\n toConnectCallOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport type { SdkScales } from \"../../shared/decimal-surface.js\";\nimport { parse } from \"../../shared/validation.js\";\nimport {\n GetUnifiedAssetBalancesInputSchema,\n GetZippedAssetSupplyGroupInputSchema,\n GetZippedAssetSupplyInputSchema,\n createUnifiedAssetBalancesResponseSchema,\n createZippedAssetSupplyGroupResponseSchema,\n createZippedAssetSupplyResponseSchema,\n type GetUnifiedAssetBalancesInput,\n type GetZippedAssetSupplyGroupInput,\n type GetZippedAssetSupplyInput,\n type UnifiedAssetBalancesResponse,\n type ZippedAssetSupplyGroupResponse,\n type ZippedAssetSupplyResponse,\n} from \"./chain-analytics.schemas.js\";\n\n/**\n * Reads public chain analytics chart series.\n */\nexport class ChainAnalyticsService {\n #client: Client<typeof Proto.ChainAnalyticsService>;\n #scales: SdkScales;\n\n constructor(transport: Transport, scales: SdkScales) {\n this.#client = createClient(Proto.ChainAnalyticsService, transport);\n this.#scales = scales;\n }\n\n /**\n * Returns route-scoped zToken supply chart columns for one zipped asset.\n */\n async getZippedAssetSupply(\n input: GetZippedAssetSupplyInput,\n options?: PolyesterRequestOptions,\n ): Promise<ZippedAssetSupplyResponse> {\n const parsedInput = parse(GetZippedAssetSupplyInputSchema, input);\n await this.#scales.ready();\n const response = await this.#client.getZippedAssetSupply(\n parsedInput,\n toConnectCallOptions(options),\n );\n return parse(createZippedAssetSupplyResponseSchema(this.#scales), response);\n }\n\n /**\n * Returns grouped zToken supply chart columns for all zipped assets in one group.\n */\n async getZippedAssetSupplyGroup(\n input: GetZippedAssetSupplyGroupInput,\n options?: PolyesterRequestOptions,\n ): Promise<ZippedAssetSupplyGroupResponse> {\n const parsedInput = parse(GetZippedAssetSupplyGroupInputSchema, input);\n await this.#scales.ready();\n const response = await this.#client.getZippedAssetSupplyGroup(\n parsedInput,\n toConnectCallOptions(options),\n );\n return parse(createZippedAssetSupplyGroupResponseSchema(this.#scales), response);\n }\n\n /**\n * Returns total public unified-asset balance chart columns.\n */\n async getUnifiedAssetBalances(\n input: GetUnifiedAssetBalancesInput,\n options?: PolyesterRequestOptions,\n ): Promise<UnifiedAssetBalancesResponse> {\n const parsedInput = parse(GetUnifiedAssetBalancesInputSchema, input);\n await this.#scales.ready();\n const response = await this.#client.getUnifiedAssetBalances(\n parsedInput,\n toConnectCallOptions(options),\n );\n return parse(createUnifiedAssetBalancesResponseSchema(this.#scales), response);\n }\n}\n"],"mappings":";;;;;;;;;AA0BA,IAAa,wBAAb,MAAmC;CAC/B;CACA;CAEA,YAAY,WAAsB,QAAmB;EACjD,KAAKA,UAAU,aAAaC,yBAA6B,SAAS;EAClE,KAAKC,UAAU;CACnB;;;;CAKA,MAAM,qBACF,OACA,SACkC;EAClC,MAAM,cAAc,MAAM,iCAAiC,KAAK;EAChE,MAAM,KAAKA,QAAQ,MAAM;EACzB,MAAM,WAAW,MAAM,KAAKF,QAAQ,qBAChC,aACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,sCAAsC,KAAKE,OAAO,GAAG,QAAQ;CAC9E;;;;CAKA,MAAM,0BACF,OACA,SACuC;EACvC,MAAM,cAAc,MAAM,sCAAsC,KAAK;EACrE,MAAM,KAAKA,QAAQ,MAAM;EACzB,MAAM,WAAW,MAAM,KAAKF,QAAQ,0BAChC,aACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,2CAA2C,KAAKE,OAAO,GAAG,QAAQ;CACnF;;;;CAKA,MAAM,wBACF,OACA,SACqC;EACrC,MAAM,cAAc,MAAM,oCAAoC,KAAK;EACnE,MAAM,KAAKA,QAAQ,MAAM;EACzB,MAAM,WAAW,MAAM,KAAKF,QAAQ,wBAChC,aACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,yCAAyC,KAAKE,OAAO,GAAG,QAAQ;CACjF;AACJ"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import { parse } from "../../shared/validation.js";
|
|
1
2
|
import { toConnectCallOptions } from "../../shared/request-options.js";
|
|
2
3
|
import { removeUndefined } from "../../utils/remove-undefined.js";
|
|
3
4
|
import { resolveAccountScopedInput } from "../subaccount-resolver.js";
|
|
4
5
|
import { DepositAddressService } from "../../gen/chain/deposit/v1/deposit_pb.js";
|
|
5
6
|
import { CreateDepositAddressInputSchema, DepositAddressSchema, DepositAddressesSchema, ListDepositAddressesInputSchema } from "./deposit.schemas.js";
|
|
6
7
|
import { createClient } from "@connectrpc/connect";
|
|
7
|
-
import * as v from "valibot";
|
|
8
8
|
//#region src/services/deposit/deposit.ts
|
|
9
9
|
/**
|
|
10
10
|
* Manages chain deposit addresses for root accounts and subaccounts.
|
|
@@ -21,19 +21,19 @@ var DepositService = class {
|
|
|
21
21
|
*/
|
|
22
22
|
async createAddress(input, options) {
|
|
23
23
|
const resolvedInput = resolveAccountScopedInput(input, this.#resolver);
|
|
24
|
-
const validatedInput =
|
|
24
|
+
const validatedInput = parse(CreateDepositAddressInputSchema, resolvedInput);
|
|
25
25
|
const res = await this.#client.createDepositAddress(removeUndefined(validatedInput), toConnectCallOptions(options));
|
|
26
26
|
if (!res.depositAddress) return null;
|
|
27
|
-
return
|
|
27
|
+
return parse(DepositAddressSchema, res.depositAddress);
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
30
|
* Lists known deposit addresses for the resolved account target, optionally filtered by chain. Results are ordered by ascending chain id in the generated proto contract.
|
|
31
31
|
*/
|
|
32
32
|
async listAddresses(input = {}, options) {
|
|
33
33
|
const resolvedInput = resolveAccountScopedInput(input, this.#resolver);
|
|
34
|
-
const validatedInput =
|
|
34
|
+
const validatedInput = parse(ListDepositAddressesInputSchema, resolvedInput);
|
|
35
35
|
const res = await this.#client.listDepositAddresses(removeUndefined(validatedInput), toConnectCallOptions(options));
|
|
36
|
-
return
|
|
36
|
+
return parse(DepositAddressesSchema, res.depositAddresses);
|
|
37
37
|
}
|
|
38
38
|
};
|
|
39
39
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deposit.js","names":["#client","Proto.DepositAddressService","#resolver"],"sources":["../../../src/services/deposit/deposit.ts"],"sourcesContent":["import { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport * as Proto from \"../../gen/chain/deposit/v1/deposit_pb.js\";\nimport { removeUndefined } from \"../../utils/remove-undefined.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../subaccount-resolver.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport
|
|
1
|
+
{"version":3,"file":"deposit.js","names":["#client","Proto.DepositAddressService","#resolver"],"sources":["../../../src/services/deposit/deposit.ts"],"sourcesContent":["import { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport * as Proto from \"../../gen/chain/deposit/v1/deposit_pb.js\";\nimport { removeUndefined } from \"../../utils/remove-undefined.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../subaccount-resolver.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport { parse } from \"../../shared/validation.js\";\nimport {\n CreateDepositAddressInputSchema,\n DepositAddressSchema,\n DepositAddressesSchema,\n ListDepositAddressesInputSchema,\n type CreateDepositAddressInput,\n type ListDepositAddressesInput,\n type DepositAddress,\n} from \"./deposit.schemas.js\";\n\n/**\n * Manages chain deposit addresses for root accounts and subaccounts.\n */\nexport class DepositService {\n #client: Client<typeof Proto.DepositAddressService>;\n #resolver?: SubaccountResolver;\n\n constructor(transport: Transport, resolver?: SubaccountResolver) {\n this.#client = createClient(Proto.DepositAddressService, transport);\n this.#resolver = resolver;\n }\n\n /**\n * Creates or returns the deposit address assigned to the resolved account target for a selected chain. Returns null if the backend response does not include an address.\n */\n async createAddress(\n input: CreateDepositAddressInput,\n options?: PolyesterMutationOptions,\n ): Promise<DepositAddress | null> {\n const resolvedInput = resolveAccountScopedInput(input, this.#resolver);\n const validatedInput = parse(CreateDepositAddressInputSchema, resolvedInput);\n const res = await this.#client.createDepositAddress(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n if (!res.depositAddress) return null;\n return parse(DepositAddressSchema, res.depositAddress);\n }\n\n /**\n * Lists known deposit addresses for the resolved account target, optionally filtered by chain. Results are ordered by ascending chain id in the generated proto contract.\n */\n async listAddresses(\n input: ListDepositAddressesInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<DepositAddress[]> {\n const resolvedInput = resolveAccountScopedInput(input, this.#resolver);\n const validatedInput = parse(ListDepositAddressesInputSchema, resolvedInput);\n const res = await this.#client.listDepositAddresses(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n return parse(DepositAddressesSchema, res.depositAddresses);\n }\n}\n"],"mappings":";;;;;;;;;;;AAuBA,IAAa,iBAAb,MAA4B;CACxB;CACA;CAEA,YAAY,WAAsB,UAA+B;EAC7D,KAAKA,UAAU,aAAaC,uBAA6B,SAAS;EAClE,KAAKC,YAAY;CACrB;;;;CAKA,MAAM,cACF,OACA,SAC8B;EAC9B,MAAM,gBAAgB,0BAA0B,OAAO,KAAKA,SAAS;EACrE,MAAM,iBAAiB,MAAM,iCAAiC,aAAa;EAC3E,MAAM,MAAM,MAAM,KAAKF,QAAQ,qBAC3B,gBAAgB,cAAc,GAC9B,qBAAqB,OAAO,CAChC;EACA,IAAI,CAAC,IAAI,gBAAgB,OAAO;EAChC,OAAO,MAAM,sBAAsB,IAAI,cAAc;CACzD;;;;CAKA,MAAM,cACF,QAAmC,CAAC,GACpC,SACyB;EACzB,MAAM,gBAAgB,0BAA0B,OAAO,KAAKE,SAAS;EACrE,MAAM,iBAAiB,MAAM,iCAAiC,aAAa;EAC3E,MAAM,MAAM,MAAM,KAAKF,QAAQ,qBAC3B,gBAAgB,cAAc,GAC9B,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,wBAAwB,IAAI,gBAAgB;CAC7D;AACJ"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { parse } from "../../shared/validation.js";
|
|
1
2
|
import { toConnectCallOptions } from "../../shared/request-options.js";
|
|
2
3
|
import { removeUndefined } from "../../utils/remove-undefined.js";
|
|
3
4
|
import { resolveAccountScopedInput } from "../subaccount-resolver.js";
|
|
@@ -5,7 +6,6 @@ import { formatConnectError, isResourceNotFoundError } from "../../utils/errors.
|
|
|
5
6
|
import { GuardSignerService as GuardSignerService$1 } from "../../gen/chain/guard/v1/guard_signer_pb.js";
|
|
6
7
|
import { BatchGuardApprovalsSchema, BatchSignProtectedActionInputSchema, CreateGuardSignerWalletResultSchema, ExportGuardSignerWalletResultSchema, GuardApprovalSchema, GuardSignerScopedInputSchema, GuardSignerStatusSchema, RotateGuardSignerWalletResultSchema, SignProtectedActionInputSchema } from "./guard-signer.schemas.js";
|
|
7
8
|
import { createClient } from "@connectrpc/connect";
|
|
8
|
-
import * as v from "valibot";
|
|
9
9
|
//#region src/services/guard-signer/guard-signer.ts
|
|
10
10
|
const GUARD_SIGNER_WALLET_NOT_FOUND_MESSAGE = "guard signer wallet not found";
|
|
11
11
|
function isGuardSignerWalletNotFoundError(err) {
|
|
@@ -25,18 +25,18 @@ var GuardSignerService = class {
|
|
|
25
25
|
* Creates a guard signer wallet for the resolved account target and returns the generated signer EVM address.
|
|
26
26
|
*/
|
|
27
27
|
async createWallet(input = {}, options) {
|
|
28
|
-
const request =
|
|
28
|
+
const request = parse(GuardSignerScopedInputSchema, this.resolveInput(input));
|
|
29
29
|
const response = await this.#client.createGuardSignerWallet(removeUndefined(request), toConnectCallOptions(options));
|
|
30
|
-
return
|
|
30
|
+
return parse(CreateGuardSignerWalletResultSchema, response);
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
33
|
* Returns stored and live guard signer status for the resolved account target, including signer address, on-chain signer, initialization state, nonce, and nonce space. Returns null when the backend reports the wallet is not found.
|
|
34
34
|
*/
|
|
35
35
|
async getStatus(input = {}, options) {
|
|
36
|
-
const request =
|
|
36
|
+
const request = parse(GuardSignerScopedInputSchema, this.resolveInput(input));
|
|
37
37
|
try {
|
|
38
38
|
const response = await this.#client.getGuardSignerStatus(removeUndefined(request), toConnectCallOptions(options));
|
|
39
|
-
return response.status ?
|
|
39
|
+
return response.status ? parse(GuardSignerStatusSchema, response.status) : null;
|
|
40
40
|
} catch (err) {
|
|
41
41
|
if (isResourceNotFoundError(err) || isGuardSignerWalletNotFoundError(err)) return null;
|
|
42
42
|
throw err;
|
|
@@ -46,34 +46,34 @@ var GuardSignerService = class {
|
|
|
46
46
|
* Creates one guard approval signature for a supported protected action, such as whitelist updates or whitelist requirement changes. Returns null if the backend response has no approval payload.
|
|
47
47
|
*/
|
|
48
48
|
async signProtectedAction(input, options) {
|
|
49
|
-
const request =
|
|
49
|
+
const request = parse(SignProtectedActionInputSchema, this.resolveInput(input));
|
|
50
50
|
const response = await this.#client.signProtectedAction(removeUndefined(request), toConnectCallOptions(options));
|
|
51
|
-
return response.approval ?
|
|
51
|
+
return response.approval ? parse(GuardApprovalSchema, response.approval) : null;
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
54
|
* Creates ordered guard approval signatures for a batch of protected actions and verifies the backend returned one approval per requested action.
|
|
55
55
|
*/
|
|
56
56
|
async batchSignProtectedActions(input, options) {
|
|
57
|
-
const request =
|
|
57
|
+
const request = parse(BatchSignProtectedActionInputSchema, this.resolveInput(input));
|
|
58
58
|
const response = await this.#client.batchSignProtectedActions(removeUndefined(request), toConnectCallOptions(options));
|
|
59
59
|
if (response.approvals.length !== input.actions.length) throw new Error("Backend returned a mismatched number of GuardSigner approvals.");
|
|
60
|
-
return
|
|
60
|
+
return parse(BatchGuardApprovalsSchema, response);
|
|
61
61
|
}
|
|
62
62
|
/**
|
|
63
63
|
* Generates a backend-managed replacement guard signer for the resolved account target and returns the new signer address plus the rotation approval payload.
|
|
64
64
|
*/
|
|
65
65
|
async rotateWallet(input = {}, options) {
|
|
66
|
-
const request =
|
|
66
|
+
const request = parse(GuardSignerScopedInputSchema, this.resolveInput(input));
|
|
67
67
|
const response = await this.#client.rotateGuardSignerWallet(removeUndefined(request), toConnectCallOptions(options));
|
|
68
|
-
return
|
|
68
|
+
return parse(RotateGuardSignerWalletResultSchema, response);
|
|
69
69
|
}
|
|
70
70
|
/**
|
|
71
71
|
* Exports guard signer private key material for the resolved account target after owner authorization and fresh step-up, returning the backend export response.
|
|
72
72
|
*/
|
|
73
73
|
async exportWallet(input = {}, options) {
|
|
74
|
-
const request =
|
|
74
|
+
const request = parse(GuardSignerScopedInputSchema, this.resolveInput(input));
|
|
75
75
|
const response = await this.#client.exportGuardSignerWallet(removeUndefined(request), toConnectCallOptions(options));
|
|
76
|
-
return
|
|
76
|
+
return parse(ExportGuardSignerWalletResultSchema, response);
|
|
77
77
|
}
|
|
78
78
|
resolveInput(input) {
|
|
79
79
|
return resolveAccountScopedInput(input, this.#resolver);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard-signer.js","names":["#client","Proto.GuardSignerService","#resolver"],"sources":["../../../src/services/guard-signer/guard-signer.ts"],"sourcesContent":["import { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport * as Proto from \"../../gen/chain/guard/v1/guard_signer_pb.js\";\nimport { removeUndefined } from \"../../utils/remove-undefined.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../subaccount-resolver.js\";\nimport type { AccountScopedInput } from \"../../shared/account-scope.js\";\nimport {\n BatchGuardApprovalsSchema,\n BatchSignProtectedActionInputSchema,\n CreateGuardSignerWalletResultSchema,\n ExportGuardSignerWalletResultSchema,\n GuardApprovalSchema,\n GuardSignerScopedInputSchema,\n GuardSignerStatusSchema,\n RotateGuardSignerWalletResultSchema,\n SignProtectedActionInputSchema,\n type BatchGuardApprovals,\n type BatchSignProtectedActionInput,\n type CreateGuardSignerWalletResult,\n type ExportGuardSignerWalletResult,\n type GuardApproval,\n type GuardSignerScopedInput,\n type GuardSignerStatus,\n type RotateGuardSignerWalletResult,\n type SignProtectedActionInput,\n} from \"./guard-signer.schemas.js\";\nimport { formatConnectError, isResourceNotFoundError } from \"../../utils/errors.js\";\nimport
|
|
1
|
+
{"version":3,"file":"guard-signer.js","names":["#client","Proto.GuardSignerService","#resolver"],"sources":["../../../src/services/guard-signer/guard-signer.ts"],"sourcesContent":["import { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport * as Proto from \"../../gen/chain/guard/v1/guard_signer_pb.js\";\nimport { removeUndefined } from \"../../utils/remove-undefined.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../subaccount-resolver.js\";\nimport type { AccountScopedInput } from \"../../shared/account-scope.js\";\nimport {\n BatchGuardApprovalsSchema,\n BatchSignProtectedActionInputSchema,\n CreateGuardSignerWalletResultSchema,\n ExportGuardSignerWalletResultSchema,\n GuardApprovalSchema,\n GuardSignerScopedInputSchema,\n GuardSignerStatusSchema,\n RotateGuardSignerWalletResultSchema,\n SignProtectedActionInputSchema,\n type BatchGuardApprovals,\n type BatchSignProtectedActionInput,\n type CreateGuardSignerWalletResult,\n type ExportGuardSignerWalletResult,\n type GuardApproval,\n type GuardSignerScopedInput,\n type GuardSignerStatus,\n type RotateGuardSignerWalletResult,\n type SignProtectedActionInput,\n} from \"./guard-signer.schemas.js\";\nimport { formatConnectError, isResourceNotFoundError } from \"../../utils/errors.js\";\nimport { parse } from \"../../shared/validation.js\";\n\nconst GUARD_SIGNER_WALLET_NOT_FOUND_MESSAGE = \"guard signer wallet not found\";\n\nfunction isGuardSignerWalletNotFoundError(err: unknown): boolean {\n return formatConnectError(err, \"\")\n .toLowerCase()\n .includes(GUARD_SIGNER_WALLET_NOT_FOUND_MESSAGE);\n}\n\n/**\n * Manages backend guard signer wallets and approval signatures for protected Polyester account actions.\n */\nexport class GuardSignerService {\n #client: Client<typeof Proto.GuardSignerService>;\n #resolver?: SubaccountResolver;\n\n constructor(transport: Transport, resolver?: SubaccountResolver) {\n this.#client = createClient(Proto.GuardSignerService, transport);\n this.#resolver = resolver;\n }\n\n /**\n * Creates a guard signer wallet for the resolved account target and returns the generated signer EVM address.\n */\n async createWallet(\n input: GuardSignerScopedInput = {},\n options?: PolyesterMutationOptions,\n ): Promise<CreateGuardSignerWalletResult> {\n const request = parse(GuardSignerScopedInputSchema, this.resolveInput(input));\n const response = await this.#client.createGuardSignerWallet(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return parse(CreateGuardSignerWalletResultSchema, response);\n }\n\n /**\n * Returns stored and live guard signer status for the resolved account target, including signer address, on-chain signer, initialization state, nonce, and nonce space. Returns null when the backend reports the wallet is not found.\n */\n async getStatus(\n input: GuardSignerScopedInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<GuardSignerStatus | null> {\n const request = parse(GuardSignerScopedInputSchema, this.resolveInput(input));\n try {\n const response = await this.#client.getGuardSignerStatus(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return response.status ? parse(GuardSignerStatusSchema, response.status) : null;\n } catch (err) {\n if (isResourceNotFoundError(err) || isGuardSignerWalletNotFoundError(err)) return null;\n throw err;\n }\n }\n\n /**\n * Creates one guard approval signature for a supported protected action, such as whitelist updates or whitelist requirement changes. Returns null if the backend response has no approval payload.\n */\n async signProtectedAction(\n input: SignProtectedActionInput,\n options?: PolyesterMutationOptions,\n ): Promise<GuardApproval | null> {\n const request = parse(SignProtectedActionInputSchema, this.resolveInput(input));\n const response = await this.#client.signProtectedAction(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return response.approval ? parse(GuardApprovalSchema, response.approval) : null;\n }\n\n /**\n * Creates ordered guard approval signatures for a batch of protected actions and verifies the backend returned one approval per requested action.\n */\n async batchSignProtectedActions(\n input: BatchSignProtectedActionInput,\n options?: PolyesterMutationOptions,\n ): Promise<BatchGuardApprovals> {\n const request = parse(BatchSignProtectedActionInputSchema, this.resolveInput(input));\n const response = await this.#client.batchSignProtectedActions(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n\n if (response.approvals.length !== input.actions.length) {\n throw new Error(\"Backend returned a mismatched number of GuardSigner approvals.\");\n }\n\n return parse(BatchGuardApprovalsSchema, response);\n }\n\n /**\n * Generates a backend-managed replacement guard signer for the resolved account target and returns the new signer address plus the rotation approval payload.\n */\n async rotateWallet(\n input: GuardSignerScopedInput = {},\n options?: PolyesterMutationOptions,\n ): Promise<RotateGuardSignerWalletResult> {\n const request = parse(GuardSignerScopedInputSchema, this.resolveInput(input));\n const response = await this.#client.rotateGuardSignerWallet(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return parse(RotateGuardSignerWalletResultSchema, response);\n }\n\n /**\n * Exports guard signer private key material for the resolved account target after owner authorization and fresh step-up, returning the backend export response.\n */\n async exportWallet(\n input: GuardSignerScopedInput = {},\n options?: PolyesterMutationOptions,\n ): Promise<ExportGuardSignerWalletResult> {\n const request = parse(GuardSignerScopedInputSchema, this.resolveInput(input));\n const response = await this.#client.exportGuardSignerWallet(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return parse(ExportGuardSignerWalletResultSchema, response);\n }\n\n private resolveInput<TInput extends AccountScopedInput>(input: TInput): TInput {\n return resolveAccountScopedInput(input, this.#resolver);\n }\n}\n"],"mappings":";;;;;;;;;AAiCA,MAAM,wCAAwC;AAE9C,SAAS,iCAAiC,KAAuB;CAC7D,OAAO,mBAAmB,KAAK,EAAE,CAAC,CAC7B,YAAY,CAAC,CACb,SAAS,qCAAqC;AACvD;;;;AAKA,IAAa,qBAAb,MAAgC;CAC5B;CACA;CAEA,YAAY,WAAsB,UAA+B;EAC7D,KAAKA,UAAU,aAAaC,sBAA0B,SAAS;EAC/D,KAAKC,YAAY;CACrB;;;;CAKA,MAAM,aACF,QAAgC,CAAC,GACjC,SACsC;EACtC,MAAM,UAAU,MAAM,8BAA8B,KAAK,aAAa,KAAK,CAAC;EAC5E,MAAM,WAAW,MAAM,KAAKF,QAAQ,wBAChC,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,qCAAqC,QAAQ;CAC9D;;;;CAKA,MAAM,UACF,QAAgC,CAAC,GACjC,SACiC;EACjC,MAAM,UAAU,MAAM,8BAA8B,KAAK,aAAa,KAAK,CAAC;EAC5E,IAAI;GACA,MAAM,WAAW,MAAM,KAAKA,QAAQ,qBAChC,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;GACA,OAAO,SAAS,SAAS,MAAM,yBAAyB,SAAS,MAAM,IAAI;EAC/E,SAAS,KAAK;GACV,IAAI,wBAAwB,GAAG,KAAK,iCAAiC,GAAG,GAAG,OAAO;GAClF,MAAM;EACV;CACJ;;;;CAKA,MAAM,oBACF,OACA,SAC6B;EAC7B,MAAM,UAAU,MAAM,gCAAgC,KAAK,aAAa,KAAK,CAAC;EAC9E,MAAM,WAAW,MAAM,KAAKA,QAAQ,oBAChC,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;EACA,OAAO,SAAS,WAAW,MAAM,qBAAqB,SAAS,QAAQ,IAAI;CAC/E;;;;CAKA,MAAM,0BACF,OACA,SAC4B;EAC5B,MAAM,UAAU,MAAM,qCAAqC,KAAK,aAAa,KAAK,CAAC;EACnF,MAAM,WAAW,MAAM,KAAKA,QAAQ,0BAChC,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;EAEA,IAAI,SAAS,UAAU,WAAW,MAAM,QAAQ,QAC5C,MAAM,IAAI,MAAM,gEAAgE;EAGpF,OAAO,MAAM,2BAA2B,QAAQ;CACpD;;;;CAKA,MAAM,aACF,QAAgC,CAAC,GACjC,SACsC;EACtC,MAAM,UAAU,MAAM,8BAA8B,KAAK,aAAa,KAAK,CAAC;EAC5E,MAAM,WAAW,MAAM,KAAKA,QAAQ,wBAChC,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,qCAAqC,QAAQ;CAC9D;;;;CAKA,MAAM,aACF,QAAgC,CAAC,GACjC,SACsC;EACtC,MAAM,UAAU,MAAM,8BAA8B,KAAK,aAAa,KAAK,CAAC;EAC5E,MAAM,WAAW,MAAM,KAAKA,QAAQ,wBAChC,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,qCAAqC,QAAQ;CAC9D;CAEA,aAAwD,OAAuB;EAC3E,OAAO,0BAA0B,OAAO,KAAKE,SAAS;CAC1D;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heatmap.d.ts","names":[],"sources":["../../../src/services/heatmap/heatmap.ts"],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"file":"heatmap.d.ts","names":[],"sources":["../../../src/services/heatmap/heatmap.ts"],"mappings":";;;;;;;;UA2BiB;EACb,oBACI,OAAO,0BACP,UAAU,0BACX,QAAQ;;UAGL,kCAAkC,mBAAmB;EAC3D;EACA,UAAU;;;;;cAWD,0BAA0B;;EAOvB,YAAA,WAAW,WAAW,UAAU,mBAAmB,QAAQ;;;;EAWjE,oBACF,OAAO,0BACP,UAAU,0BACX,QAAQ;;;;EA4BX,cAAc,OAAO"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { parse } from "../../shared/validation.js";
|
|
1
2
|
import { toConnectCallOptions } from "../../shared/request-options.js";
|
|
2
3
|
import { publicationHandlerErrorContext } from "../../shared/subscription-errors.js";
|
|
3
4
|
import { createReadyGate } from "../../shared/decimal-surface.js";
|
|
@@ -32,27 +33,27 @@ var HeatmapService = class {
|
|
|
32
33
|
* Fetches order book heatmap data for a symbol, interval, depth, and quantity mode using either an absolute time range or cursor pagination. The response includes a keyframe anchor, delta buckets, pagination metadata, and live-anchor fields when available.
|
|
33
34
|
*/
|
|
34
35
|
async getOrderbookHeatmap(input, options) {
|
|
35
|
-
const parsed =
|
|
36
|
+
const parsed = parse(GetOrderbookHeatmapInputSchema, input);
|
|
36
37
|
await this.#scales.ready();
|
|
37
38
|
const res = await this.#client.getOrderbookHeatmap({
|
|
38
39
|
symbolId: parsed.symbolId,
|
|
39
40
|
interval: parsed.interval,
|
|
40
41
|
depth: parsed.depth,
|
|
41
42
|
quantityMode: parsed.quantityMode,
|
|
42
|
-
limit: parsed.limit
|
|
43
|
+
limit: parsed.limit,
|
|
43
44
|
pageToken: parsed.pageToken,
|
|
44
45
|
timeRange: parsed.timeRange != null ? create(HeatmapTimeRangeSchema, {
|
|
45
46
|
startTime: parsed.timeRange.startTime,
|
|
46
47
|
endTime: parsed.timeRange.endTime
|
|
47
48
|
}) : void 0
|
|
48
49
|
}, toConnectCallOptions(options));
|
|
49
|
-
return
|
|
50
|
+
return parse(this.#responseSchema, res);
|
|
50
51
|
}
|
|
51
52
|
/**
|
|
52
53
|
* Subscribes to live heatmap buckets on public:spot:market:heatmap:{interval}:{symbolId}:proto and emits parsed bid/ask delta buckets for the selected interval.
|
|
53
54
|
*/
|
|
54
55
|
subscribeLive(input) {
|
|
55
|
-
const params =
|
|
56
|
+
const params = parse(SubscribeHeatmapLiveParamsSchema, {
|
|
56
57
|
symbolId: input.symbolId,
|
|
57
58
|
interval: input.interval
|
|
58
59
|
});
|
|
@@ -63,7 +64,7 @@ var HeatmapService = class {
|
|
|
63
64
|
schema: HeatmapLiveBucketSchema,
|
|
64
65
|
onPublication: (data) => {
|
|
65
66
|
gate.run(() => {
|
|
66
|
-
const bucket =
|
|
67
|
+
const bucket = parse(this.#liveBucketSchema, data);
|
|
67
68
|
input.onEvent(bucket);
|
|
68
69
|
});
|
|
69
70
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heatmap.js","names":["#client","HeatmapRpc","#realtime","#scales","#responseSchema","#liveBucketSchema","ProtoHeatmapLiveBucketSchema"],"sources":["../../../src/services/heatmap/heatmap.ts"],"sourcesContent":["import { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport { create } from \"@bufbuild/protobuf\";\nimport { publicationHandlerErrorContext } from \"../../shared/subscription-errors.js\";\nimport {\n HeatmapService as HeatmapRpc,\n HeatmapLiveBucketSchema as ProtoHeatmapLiveBucketSchema,\n HeatmapTimeRangeSchema,\n} from \"../../gen/marketdata/v1/heatmap_pb.js\";\nimport type { PolyesterRealtime } from \"../../realtime/types.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport {\n toConnectCallOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport { createReadyGate, type SdkScales } from \"../../shared/decimal-surface.js\";\nimport { HEATMAP_INTERVAL_VALUES, type HeatmapIntervalValue } from \"./heatmap.codecs.js\";\nimport * as v from \"valibot\";\nimport {\n GetOrderbookHeatmapInputSchema,\n createOrderbookHeatmapLiveBucketSchema,\n createOrderbookHeatmapResponseSchema,\n type GetOrderbookHeatmapInput,\n type OrderbookHeatmapLiveBucket,\n type OrderbookHeatmapResponse,\n} from \"./heatmap.schemas.js\";\n\nexport interface OrderbookHeatmapProvider {\n getOrderbookHeatmap(\n input: GetOrderbookHeatmapInput,\n options?: PolyesterRequestOptions,\n ): Promise<OrderbookHeatmapResponse>;\n}\n\ninterface SubscribeHeatmapLiveInput extends BaseSubscribeInput<OrderbookHeatmapLiveBucket> {\n symbolId: number;\n interval: HeatmapIntervalValue;\n}\n\nconst SubscribeHeatmapLiveParamsSchema = v.object({\n symbolId: v.pipe(v.number(), v.integer(), v.gtValue(0)),\n interval: v.picklist(HEATMAP_INTERVAL_VALUES),\n});\n\n/**\n * Reads historical order book heatmap chains and streams live heatmap buckets.\n */\nexport class HeatmapService implements OrderbookHeatmapProvider {\n #client: Client<typeof HeatmapRpc>;\n #realtime: PolyesterRealtime;\n #scales: SdkScales;\n #responseSchema: ReturnType<typeof createOrderbookHeatmapResponseSchema>;\n #liveBucketSchema: ReturnType<typeof createOrderbookHeatmapLiveBucketSchema>;\n\n constructor(transport: Transport, realtime: PolyesterRealtime, scales: SdkScales) {\n this.#client = createClient(HeatmapRpc, transport);\n this.#realtime = realtime;\n this.#scales = scales;\n this.#responseSchema = createOrderbookHeatmapResponseSchema(scales);\n this.#liveBucketSchema = createOrderbookHeatmapLiveBucketSchema(scales);\n }\n\n /**\n * Fetches order book heatmap data for a symbol, interval, depth, and quantity mode using either an absolute time range or cursor pagination. The response includes a keyframe anchor, delta buckets, pagination metadata, and live-anchor fields when available.\n */\n async getOrderbookHeatmap(\n input: GetOrderbookHeatmapInput,\n options?: PolyesterRequestOptions,\n ): Promise<OrderbookHeatmapResponse> {\n const parsed =
|
|
1
|
+
{"version":3,"file":"heatmap.js","names":["#client","HeatmapRpc","#realtime","#scales","#responseSchema","#liveBucketSchema","ProtoHeatmapLiveBucketSchema"],"sources":["../../../src/services/heatmap/heatmap.ts"],"sourcesContent":["import { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport { create } from \"@bufbuild/protobuf\";\nimport { publicationHandlerErrorContext } from \"../../shared/subscription-errors.js\";\nimport {\n HeatmapService as HeatmapRpc,\n HeatmapLiveBucketSchema as ProtoHeatmapLiveBucketSchema,\n HeatmapTimeRangeSchema,\n} from \"../../gen/marketdata/v1/heatmap_pb.js\";\nimport type { PolyesterRealtime } from \"../../realtime/types.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport {\n toConnectCallOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport { createReadyGate, type SdkScales } from \"../../shared/decimal-surface.js\";\nimport { HEATMAP_INTERVAL_VALUES, type HeatmapIntervalValue } from \"./heatmap.codecs.js\";\nimport * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport {\n GetOrderbookHeatmapInputSchema,\n createOrderbookHeatmapLiveBucketSchema,\n createOrderbookHeatmapResponseSchema,\n type GetOrderbookHeatmapInput,\n type OrderbookHeatmapLiveBucket,\n type OrderbookHeatmapResponse,\n} from \"./heatmap.schemas.js\";\n\nexport interface OrderbookHeatmapProvider {\n getOrderbookHeatmap(\n input: GetOrderbookHeatmapInput,\n options?: PolyesterRequestOptions,\n ): Promise<OrderbookHeatmapResponse>;\n}\n\ninterface SubscribeHeatmapLiveInput extends BaseSubscribeInput<OrderbookHeatmapLiveBucket> {\n symbolId: number;\n interval: HeatmapIntervalValue;\n}\n\nconst SubscribeHeatmapLiveParamsSchema = v.object({\n symbolId: v.pipe(v.number(), v.integer(), v.gtValue(0)),\n interval: v.picklist(HEATMAP_INTERVAL_VALUES),\n});\n\n/**\n * Reads historical order book heatmap chains and streams live heatmap buckets.\n */\nexport class HeatmapService implements OrderbookHeatmapProvider {\n #client: Client<typeof HeatmapRpc>;\n #realtime: PolyesterRealtime;\n #scales: SdkScales;\n #responseSchema: ReturnType<typeof createOrderbookHeatmapResponseSchema>;\n #liveBucketSchema: ReturnType<typeof createOrderbookHeatmapLiveBucketSchema>;\n\n constructor(transport: Transport, realtime: PolyesterRealtime, scales: SdkScales) {\n this.#client = createClient(HeatmapRpc, transport);\n this.#realtime = realtime;\n this.#scales = scales;\n this.#responseSchema = createOrderbookHeatmapResponseSchema(scales);\n this.#liveBucketSchema = createOrderbookHeatmapLiveBucketSchema(scales);\n }\n\n /**\n * Fetches order book heatmap data for a symbol, interval, depth, and quantity mode using either an absolute time range or cursor pagination. The response includes a keyframe anchor, delta buckets, pagination metadata, and live-anchor fields when available.\n */\n async getOrderbookHeatmap(\n input: GetOrderbookHeatmapInput,\n options?: PolyesterRequestOptions,\n ): Promise<OrderbookHeatmapResponse> {\n const parsed = parse(GetOrderbookHeatmapInputSchema, input);\n await this.#scales.ready();\n\n const res = await this.#client.getOrderbookHeatmap(\n {\n symbolId: parsed.symbolId,\n interval: parsed.interval,\n depth: parsed.depth,\n quantityMode: parsed.quantityMode,\n limit: parsed.limit,\n pageToken: parsed.pageToken,\n timeRange:\n parsed.timeRange != null\n ? create(HeatmapTimeRangeSchema, {\n startTime: parsed.timeRange.startTime,\n endTime: parsed.timeRange.endTime,\n })\n : undefined,\n },\n toConnectCallOptions(options),\n );\n return parse(this.#responseSchema, res);\n }\n\n /**\n * Subscribes to live heatmap buckets on public:spot:market:heatmap:{interval}:{symbolId}:proto and emits parsed bid/ask delta buckets for the selected interval.\n */\n subscribeLive(input: SubscribeHeatmapLiveInput): () => void {\n const params = parse(SubscribeHeatmapLiveParamsSchema, {\n symbolId: input.symbolId,\n interval: input.interval,\n });\n const channel = `public:spot:market:heatmap:${params.interval}:${params.symbolId}:proto`;\n const gate = createReadyGate(\n () => this.#scales.ready(),\n (error) => input.onError?.(publicationHandlerErrorContext(channel, error)),\n );\n return this.#realtime.connectProtoChannel({\n channel,\n schema: ProtoHeatmapLiveBucketSchema,\n onPublication: (data) => {\n gate.run(() => {\n const bucket = parse(this.#liveBucketSchema, data);\n input.onEvent(bucket);\n });\n },\n onConnected: input.onOpen,\n onDisconnected: input.onClose,\n onError: input.onError,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;AAuCA,MAAM,mCAAmC,EAAE,OAAO;CAC9C,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,QAAQ,GAAG,EAAE,QAAQ,CAAC,CAAC;CACtD,UAAU,EAAE,SAAS,uBAAuB;AAChD,CAAC;;;;AAKD,IAAa,iBAAb,MAAgE;CAC5D;CACA;CACA;CACA;CACA;CAEA,YAAY,WAAsB,UAA6B,QAAmB;EAC9E,KAAKA,UAAU,aAAaC,kBAAY,SAAS;EACjD,KAAKC,YAAY;EACjB,KAAKC,UAAU;EACf,KAAKC,kBAAkB,qCAAqC,MAAM;EAClE,KAAKC,oBAAoB,uCAAuC,MAAM;CAC1E;;;;CAKA,MAAM,oBACF,OACA,SACiC;EACjC,MAAM,SAAS,MAAM,gCAAgC,KAAK;EAC1D,MAAM,KAAKF,QAAQ,MAAM;EAEzB,MAAM,MAAM,MAAM,KAAKH,QAAQ,oBAC3B;GACI,UAAU,OAAO;GACjB,UAAU,OAAO;GACjB,OAAO,OAAO;GACd,cAAc,OAAO;GACrB,OAAO,OAAO;GACd,WAAW,OAAO;GAClB,WACI,OAAO,aAAa,OACd,OAAO,wBAAwB;IAC3B,WAAW,OAAO,UAAU;IAC5B,SAAS,OAAO,UAAU;GAC9B,CAAC,IACD,KAAA;EACd,GACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,KAAKI,iBAAiB,GAAG;CAC1C;;;;CAKA,cAAc,OAA8C;EACxD,MAAM,SAAS,MAAM,kCAAkC;GACnD,UAAU,MAAM;GAChB,UAAU,MAAM;EACpB,CAAC;EACD,MAAM,UAAU,8BAA8B,OAAO,SAAS,GAAG,OAAO,SAAS;EACjF,MAAM,OAAO,sBACH,KAAKD,QAAQ,MAAM,IACxB,UAAU,MAAM,UAAU,+BAA+B,SAAS,KAAK,CAAC,CAC7E;EACA,OAAO,KAAKD,UAAU,oBAAoB;GACtC;GACA,QAAQI;GACR,gBAAgB,SAAS;IACrB,KAAK,UAAU;KACX,MAAM,SAAS,MAAM,KAAKD,mBAAmB,IAAI;KACjD,MAAM,QAAQ,MAAM;IACxB,CAAC;GACL;GACA,aAAa,MAAM;GACnB,gBAAgB,MAAM;GACtB,SAAS,MAAM;EACnB,CAAC;CACL;AACJ"}
|