@decibeltrade/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.
Files changed (132) hide show
  1. package/dist/abi/generate-abis.js +2 -2
  2. package/dist/abi/json/mainnet.json +2905 -0
  3. package/dist/abi/json/netna.json +792 -289
  4. package/dist/abi/json/testnet.json +15 -3
  5. package/dist/admin.d.ts +36 -0
  6. package/dist/admin.d.ts.map +1 -1
  7. package/dist/admin.js +84 -0
  8. package/dist/base.d.ts +1 -6
  9. package/dist/base.d.ts.map +1 -1
  10. package/dist/base.js +17 -24
  11. package/dist/constants.d.ts +10 -4
  12. package/dist/constants.d.ts.map +1 -1
  13. package/dist/constants.js +21 -6
  14. package/dist/fee-pay.d.ts +3 -3
  15. package/dist/fee-pay.d.ts.map +1 -1
  16. package/dist/fee-pay.js +26 -49
  17. package/dist/gas/gas-price-manager.d.ts.map +1 -1
  18. package/dist/gas/gas-price-manager.js +3 -1
  19. package/dist/read/account-overview/account-overview.reader.d.ts +2 -0
  20. package/dist/read/account-overview/account-overview.reader.d.ts.map +1 -1
  21. package/dist/read/account-overview/account-overview.types.d.ts +4 -0
  22. package/dist/read/account-overview/account-overview.types.d.ts.map +1 -1
  23. package/dist/read/account-overview/account-overview.types.js +5 -0
  24. package/dist/read/action-utils.d.ts +12 -0
  25. package/dist/read/action-utils.d.ts.map +1 -0
  26. package/dist/read/action-utils.js +13 -0
  27. package/dist/read/base-reader.d.ts +1 -0
  28. package/dist/read/base-reader.d.ts.map +1 -1
  29. package/dist/read/base-reader.js +15 -0
  30. package/dist/read/base-reader.test.d.ts +2 -0
  31. package/dist/read/base-reader.test.d.ts.map +1 -0
  32. package/dist/read/base-reader.test.js +68 -0
  33. package/dist/read/global-points-stats/global-points-stats.reader.d.ts +9 -0
  34. package/dist/read/global-points-stats/global-points-stats.reader.d.ts.map +1 -0
  35. package/dist/read/global-points-stats/global-points-stats.reader.js +12 -0
  36. package/dist/read/global-points-stats/global-points-stats.types.d.ts +9 -0
  37. package/dist/read/global-points-stats/global-points-stats.types.d.ts.map +1 -0
  38. package/dist/read/global-points-stats/global-points-stats.types.js +5 -0
  39. package/dist/read/index.d.ts +13 -0
  40. package/dist/read/index.d.ts.map +1 -1
  41. package/dist/read/index.js +23 -2
  42. package/dist/read/market-depth/market-depth.reader.d.ts +1 -18
  43. package/dist/read/market-depth/market-depth.reader.d.ts.map +1 -1
  44. package/dist/read/market-depth/market-depth.reader.js +18 -20
  45. package/dist/read/market-depth/market-depth.types.d.ts +4 -2
  46. package/dist/read/market-depth/market-depth.types.d.ts.map +1 -1
  47. package/dist/read/market-depth/market-depth.types.js +3 -1
  48. package/dist/read/market-trades/market-trades.reader.d.ts +0 -1
  49. package/dist/read/market-trades/market-trades.reader.d.ts.map +1 -1
  50. package/dist/read/market-trades/market-trades.types.d.ts +0 -3
  51. package/dist/read/market-trades/market-trades.types.d.ts.map +1 -1
  52. package/dist/read/market-trades/market-trades.types.js +0 -1
  53. package/dist/read/points-leaderboard/points-leaderboard.reader.d.ts +21 -0
  54. package/dist/read/points-leaderboard/points-leaderboard.reader.d.ts.map +1 -0
  55. package/dist/read/points-leaderboard/points-leaderboard.reader.js +23 -0
  56. package/dist/read/points-leaderboard/points-leaderboard.types.d.ts +30 -0
  57. package/dist/read/points-leaderboard/points-leaderboard.types.d.ts.map +1 -0
  58. package/dist/read/points-leaderboard/points-leaderboard.types.js +11 -0
  59. package/dist/read/portfolio-chart/portfolio-chart.types.d.ts +1 -1
  60. package/dist/read/portfolio-chart/portfolio-chart.types.d.ts.map +1 -1
  61. package/dist/read/referrals/referrals.reader.d.ts +98 -0
  62. package/dist/read/referrals/referrals.reader.d.ts.map +1 -0
  63. package/dist/read/referrals/referrals.reader.js +92 -0
  64. package/dist/read/referrals/referrals.types.d.ts +136 -0
  65. package/dist/read/referrals/referrals.types.d.ts.map +1 -0
  66. package/dist/read/referrals/referrals.types.js +85 -0
  67. package/dist/read/streaks/streaks.reader.d.ts +19 -0
  68. package/dist/read/streaks/streaks.reader.d.ts.map +1 -0
  69. package/dist/read/streaks/streaks.reader.js +19 -0
  70. package/dist/read/streaks/streaks.types.d.ts +17 -0
  71. package/dist/read/streaks/streaks.types.d.ts.map +1 -0
  72. package/dist/read/streaks/streaks.types.js +10 -0
  73. package/dist/read/tier/tier.reader.d.ts +21 -0
  74. package/dist/read/tier/tier.reader.d.ts.map +1 -0
  75. package/dist/read/tier/tier.reader.js +19 -0
  76. package/dist/read/tier/tier.types.d.ts +25 -0
  77. package/dist/read/tier/tier.types.d.ts.map +1 -0
  78. package/dist/read/tier/tier.types.js +13 -0
  79. package/dist/read/trading-amps/trading-amps.reader.d.ts +18 -0
  80. package/dist/read/trading-amps/trading-amps.reader.d.ts.map +1 -0
  81. package/dist/read/trading-amps/trading-amps.reader.js +23 -0
  82. package/dist/read/trading-amps/trading-amps.types.d.ts +25 -0
  83. package/dist/read/trading-amps/trading-amps.types.d.ts.map +1 -0
  84. package/dist/read/trading-amps/trading-amps.types.js +10 -0
  85. package/dist/read/types.d.ts +6 -0
  86. package/dist/read/types.d.ts.map +1 -1
  87. package/dist/read/types.js +6 -0
  88. package/dist/read/user-funding-history/user-funding-history.reader.d.ts +1 -2
  89. package/dist/read/user-funding-history/user-funding-history.reader.d.ts.map +1 -1
  90. package/dist/read/user-funding-history/user-funding-history.types.d.ts +8 -4
  91. package/dist/read/user-funding-history/user-funding-history.types.d.ts.map +1 -1
  92. package/dist/read/user-funding-history/user-funding-history.types.js +1 -2
  93. package/dist/read/user-notifications/user-notifications.types.d.ts +0 -2
  94. package/dist/read/user-notifications/user-notifications.types.d.ts.map +1 -1
  95. package/dist/read/user-open-orders/user-open-orders.reader.d.ts +0 -2
  96. package/dist/read/user-open-orders/user-open-orders.reader.d.ts.map +1 -1
  97. package/dist/read/user-open-orders/user-open-orders.types.d.ts +0 -6
  98. package/dist/read/user-open-orders/user-open-orders.types.d.ts.map +1 -1
  99. package/dist/read/user-open-orders/user-open-orders.types.js +0 -2
  100. package/dist/read/user-order-history/user-order-history.reader.d.ts +0 -2
  101. package/dist/read/user-order-history/user-order-history.reader.d.ts.map +1 -1
  102. package/dist/read/user-order-history/user-order-history.types.d.ts +0 -6
  103. package/dist/read/user-order-history/user-order-history.types.d.ts.map +1 -1
  104. package/dist/read/user-order-history/user-order-history.types.js +0 -2
  105. package/dist/read/user-positions/user-positions.reader.d.ts +1 -0
  106. package/dist/read/user-positions/user-positions.reader.d.ts.map +1 -1
  107. package/dist/read/user-positions/user-positions.types.d.ts +220 -10
  108. package/dist/read/user-positions/user-positions.types.d.ts.map +1 -1
  109. package/dist/read/user-positions/user-positions.types.js +1 -0
  110. package/dist/read/user-trade-history/user-trade-history.reader.d.ts +5 -2
  111. package/dist/read/user-trade-history/user-trade-history.reader.d.ts.map +1 -1
  112. package/dist/read/user-trade-history/user-trade-history.types.d.ts +36 -9
  113. package/dist/read/user-trade-history/user-trade-history.types.d.ts.map +1 -1
  114. package/dist/read/user-trade-history/user-trade-history.types.js +4 -1
  115. package/dist/read/vaults/vaults.reader.d.ts +2 -0
  116. package/dist/read/vaults/vaults.reader.d.ts.map +1 -1
  117. package/dist/read/vaults/vaults.reader.js +4 -0
  118. package/dist/read/vaults/vaults.types.d.ts +18 -0
  119. package/dist/read/vaults/vaults.types.d.ts.map +1 -1
  120. package/dist/read/vaults/vaults.types.js +17 -0
  121. package/dist/read/ws-subscription.d.ts +1 -1
  122. package/dist/read/ws-subscription.d.ts.map +1 -1
  123. package/dist/read/ws-subscription.js +9 -1
  124. package/dist/release-config.d.ts +2 -0
  125. package/dist/release-config.d.ts.map +1 -1
  126. package/dist/release-config.js +6 -1
  127. package/dist/tsconfig.tsbuildinfo +1 -1
  128. package/dist/write.d.ts +38 -0
  129. package/dist/write.d.ts.map +1 -1
  130. package/dist/write.js +50 -1
  131. package/package.json +1 -1
  132. package/readme.md +7 -48
@@ -0,0 +1,98 @@
1
+ import { BaseReader, BaseRequestArgs } from "../base-reader";
2
+ import { UserReferralsRequestArgs } from "./referrals.types";
3
+ export declare class ReferralsReader extends BaseReader {
4
+ /**
5
+ * Validate a referral code (check existence and active status).
6
+ */
7
+ validateCode(code: string, { fetchOptions }?: BaseRequestArgs): Promise<{
8
+ referral_code: string;
9
+ is_valid: boolean;
10
+ is_active: boolean;
11
+ }>;
12
+ /**
13
+ * Get referral information for a specific account.
14
+ */
15
+ getAccountReferral(account: string, { fetchOptions }?: BaseRequestArgs): Promise<{
16
+ account: string;
17
+ referrer_account: string;
18
+ referral_code: string;
19
+ is_affiliate_referral: boolean;
20
+ referred_at_ms: number;
21
+ is_active: boolean;
22
+ }>;
23
+ /**
24
+ * Redeem a referral code for an account.
25
+ */
26
+ redeemCode(args: {
27
+ referralCode: string;
28
+ account: string;
29
+ }, { fetchOptions }?: BaseRequestArgs): Promise<{
30
+ referral_code: string;
31
+ account: string;
32
+ }>;
33
+ /**
34
+ * Get aggregate referral statistics for a referrer.
35
+ */
36
+ getReferrerStats(account: string, { fetchOptions }?: BaseRequestArgs): Promise<{
37
+ referrer_account: string;
38
+ total_referrals: number;
39
+ total_codes_created: number;
40
+ is_affiliate: boolean;
41
+ codes: string[];
42
+ volume_threshold_met: boolean;
43
+ }>;
44
+ /**
45
+ * Get paginated list of users referred by a referrer.
46
+ */
47
+ getUserReferrals({ referrerAccount, limit, offset, fetchOptions, }: UserReferralsRequestArgs): Promise<{
48
+ account: string;
49
+ referrer_account: string;
50
+ referral_code: string;
51
+ is_affiliate_referral: boolean;
52
+ referred_at_ms: number;
53
+ }[]>;
54
+ /**
55
+ * Get all referral codes owned by an account with per-code usage stats.
56
+ */
57
+ getAffiliateCodes(account: string, { fetchOptions }?: BaseRequestArgs): Promise<{
58
+ owner_account: string;
59
+ codes: {
60
+ referral_code: string;
61
+ owner_account: string;
62
+ max_usage: number;
63
+ usage_count: number;
64
+ is_active: boolean;
65
+ is_affiliate: boolean;
66
+ source: "unknown" | "admin" | "auto" | "predeposit";
67
+ created_at_ms: number;
68
+ }[];
69
+ volume_threshold_met: boolean;
70
+ }>;
71
+ /**
72
+ * Get affiliate earnings breakdown and referred users for an account.
73
+ */
74
+ getAffiliateEarnings(account: string, { fetchOptions }?: BaseRequestArgs): Promise<{
75
+ affiliate_account: string;
76
+ is_affiliate: boolean;
77
+ earnings: {
78
+ l1_amps: number;
79
+ l2_amps: number;
80
+ total_amps: number;
81
+ l1_count: number;
82
+ l2_count: number;
83
+ };
84
+ users: {
85
+ items: {
86
+ account: string;
87
+ level: "L1" | "L2";
88
+ referred_by: string | null;
89
+ total_amps: number;
90
+ affiliate_amps_earned: number;
91
+ total_volume: number;
92
+ active: boolean;
93
+ }[];
94
+ total_count: number;
95
+ };
96
+ }>;
97
+ }
98
+ //# sourceMappingURL=referrals.reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"referrals.reader.d.ts","sourceRoot":"","sources":["../../../src/read/referrals/referrals.reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAOL,wBAAwB,EAEzB,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,eAAgB,SAAQ,UAAU;IAC7C;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,GAAE,eAAoB;;;;;IASvE;;OAEG;IACG,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,GAAE,eAAoB;;;;;;;;IAShF;;OAEG;IACG,UAAU,CACd,IAAI,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAC/C,EAAE,YAAY,EAAE,GAAE,eAAoB;;;;IAWxC;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,GAAE,eAAoB;;;;;;;;IAS9E;;OAEG;IACG,gBAAgB,CAAC,EACrB,eAAe,EACf,KAAK,EACL,MAAM,EACN,YAAY,GACb,EAAE,wBAAwB;;;;;;;IAmB3B;;OAEG;IACG,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,GAAE,eAAoB;;;;;;;;;;;;;;IAS/E;;OAEG;IACG,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,GAAE,eAAoB;;;;;;;;;;;;;;;;;;;;;;;CAUnF"}
@@ -0,0 +1,92 @@
1
+ import { BaseReader } from "../base-reader";
2
+ import { AccountReferralSchema, AffiliateCodesResponseSchema, AffiliateEarningsResponseSchema, RedeemReferralResponseSchema, ReferralCodeValidationSchema, ReferrerStatsSchema, UserReferralsResponseSchema, } from "./referrals.types";
3
+ export class ReferralsReader extends BaseReader {
4
+ /**
5
+ * Validate a referral code (check existence and active status).
6
+ */
7
+ async validateCode(code, { fetchOptions } = {}) {
8
+ const response = await this.getRequest({
9
+ schema: ReferralCodeValidationSchema,
10
+ url: `${this.deps.config.tradingHttpUrl}/api/v1/referrals/code/${encodeURIComponent(code)}`,
11
+ options: fetchOptions,
12
+ });
13
+ return response.data;
14
+ }
15
+ /**
16
+ * Get referral information for a specific account.
17
+ */
18
+ async getAccountReferral(account, { fetchOptions } = {}) {
19
+ const response = await this.getRequest({
20
+ schema: AccountReferralSchema,
21
+ url: `${this.deps.config.tradingHttpUrl}/api/v1/referrals/account/${account}`,
22
+ options: fetchOptions,
23
+ });
24
+ return response.data;
25
+ }
26
+ /**
27
+ * Redeem a referral code for an account.
28
+ */
29
+ async redeemCode(args, { fetchOptions } = {}) {
30
+ const response = await this.postRequest({
31
+ schema: RedeemReferralResponseSchema,
32
+ url: `${this.deps.config.tradingHttpUrl}/api/v1/referrals/redeem`,
33
+ body: { referral_code: args.referralCode, account: args.account },
34
+ options: fetchOptions,
35
+ });
36
+ return response.data;
37
+ }
38
+ /**
39
+ * Get aggregate referral statistics for a referrer.
40
+ */
41
+ async getReferrerStats(account, { fetchOptions } = {}) {
42
+ const response = await this.getRequest({
43
+ schema: ReferrerStatsSchema,
44
+ url: `${this.deps.config.tradingHttpUrl}/api/v1/referrals/stats/${account}`,
45
+ options: fetchOptions,
46
+ });
47
+ return response.data;
48
+ }
49
+ /**
50
+ * Get paginated list of users referred by a referrer.
51
+ */
52
+ async getUserReferrals({ referrerAccount, limit, offset, fetchOptions, }) {
53
+ const queryParams = new URLSearchParams({ referrer_account: referrerAccount });
54
+ if (limit !== undefined) {
55
+ queryParams.set("limit", limit.toString());
56
+ }
57
+ if (offset !== undefined) {
58
+ queryParams.set("offset", offset.toString());
59
+ }
60
+ const response = await this.getRequest({
61
+ schema: UserReferralsResponseSchema,
62
+ url: `${this.deps.config.tradingHttpUrl}/api/v1/referrals/users`,
63
+ queryParams,
64
+ options: fetchOptions,
65
+ });
66
+ return response.data;
67
+ }
68
+ /**
69
+ * Get all referral codes owned by an account with per-code usage stats.
70
+ */
71
+ async getAffiliateCodes(account, { fetchOptions } = {}) {
72
+ const response = await this.getRequest({
73
+ schema: AffiliateCodesResponseSchema,
74
+ url: `${this.deps.config.tradingHttpUrl}/api/v1/affiliates/codes/${account}`,
75
+ options: fetchOptions,
76
+ });
77
+ return response.data;
78
+ }
79
+ /**
80
+ * Get affiliate earnings breakdown and referred users for an account.
81
+ */
82
+ async getAffiliateEarnings(account, { fetchOptions } = {}) {
83
+ const queryParams = new URLSearchParams({ limit: "1000" });
84
+ const response = await this.getRequest({
85
+ schema: AffiliateEarningsResponseSchema,
86
+ url: `${this.deps.config.tradingHttpUrl}/api/v1/affiliates/earnings/${account}`,
87
+ queryParams,
88
+ options: fetchOptions,
89
+ });
90
+ return response.data;
91
+ }
92
+ }
@@ -0,0 +1,136 @@
1
+ import { z } from "zod/v4";
2
+ import { BaseRequestArgs } from "../base-reader";
3
+ import { PageParams } from "../pagination.types";
4
+ export interface UserReferralsRequestArgs extends BaseRequestArgs, PageParams {
5
+ referrerAccount: string;
6
+ }
7
+ export declare const ReferralCodeValidationSchema: z.ZodObject<{
8
+ referral_code: z.ZodString;
9
+ is_valid: z.ZodBoolean;
10
+ is_active: z.ZodBoolean;
11
+ }, z.core.$strip>;
12
+ export declare const RedeemReferralResponseSchema: z.ZodObject<{
13
+ referral_code: z.ZodString;
14
+ account: z.ZodString;
15
+ }, z.core.$strip>;
16
+ export declare const AccountReferralSchema: z.ZodObject<{
17
+ account: z.ZodString;
18
+ referrer_account: z.ZodString;
19
+ referral_code: z.ZodString;
20
+ is_affiliate_referral: z.ZodBoolean;
21
+ referred_at_ms: z.ZodNumber;
22
+ is_active: z.ZodBoolean;
23
+ }, z.core.$strip>;
24
+ export declare const ReferrerStatsSchema: z.ZodObject<{
25
+ referrer_account: z.ZodString;
26
+ total_referrals: z.ZodNumber;
27
+ total_codes_created: z.ZodNumber;
28
+ is_affiliate: z.ZodBoolean;
29
+ codes: z.ZodArray<z.ZodString>;
30
+ volume_threshold_met: z.ZodBoolean;
31
+ }, z.core.$strip>;
32
+ export declare const UserReferralSchema: z.ZodObject<{
33
+ account: z.ZodString;
34
+ referrer_account: z.ZodString;
35
+ referral_code: z.ZodString;
36
+ is_affiliate_referral: z.ZodBoolean;
37
+ referred_at_ms: z.ZodNumber;
38
+ }, z.core.$strip>;
39
+ export declare const UserReferralsResponseSchema: z.ZodArray<z.ZodObject<{
40
+ account: z.ZodString;
41
+ referrer_account: z.ZodString;
42
+ referral_code: z.ZodString;
43
+ is_affiliate_referral: z.ZodBoolean;
44
+ referred_at_ms: z.ZodNumber;
45
+ }, z.core.$strip>>;
46
+ export declare const AffiliateCodeSchema: z.ZodObject<{
47
+ referral_code: z.ZodString;
48
+ owner_account: z.ZodString;
49
+ max_usage: z.ZodNumber;
50
+ usage_count: z.ZodNumber;
51
+ is_active: z.ZodBoolean;
52
+ is_affiliate: z.ZodBoolean;
53
+ source: z.ZodEnum<{
54
+ unknown: "unknown";
55
+ admin: "admin";
56
+ auto: "auto";
57
+ predeposit: "predeposit";
58
+ }>;
59
+ created_at_ms: z.ZodNumber;
60
+ }, z.core.$strip>;
61
+ export declare const AffiliateCodesResponseSchema: z.ZodObject<{
62
+ owner_account: z.ZodString;
63
+ codes: z.ZodArray<z.ZodObject<{
64
+ referral_code: z.ZodString;
65
+ owner_account: z.ZodString;
66
+ max_usage: z.ZodNumber;
67
+ usage_count: z.ZodNumber;
68
+ is_active: z.ZodBoolean;
69
+ is_affiliate: z.ZodBoolean;
70
+ source: z.ZodEnum<{
71
+ unknown: "unknown";
72
+ admin: "admin";
73
+ auto: "auto";
74
+ predeposit: "predeposit";
75
+ }>;
76
+ created_at_ms: z.ZodNumber;
77
+ }, z.core.$strip>>;
78
+ volume_threshold_met: z.ZodBoolean;
79
+ }, z.core.$strip>;
80
+ export declare const AffiliateReferredUserSchema: z.ZodObject<{
81
+ account: z.ZodString;
82
+ level: z.ZodEnum<{
83
+ L1: "L1";
84
+ L2: "L2";
85
+ }>;
86
+ referred_by: z.ZodNullable<z.ZodString>;
87
+ total_amps: z.ZodNumber;
88
+ affiliate_amps_earned: z.ZodNumber;
89
+ total_volume: z.ZodNumber;
90
+ active: z.ZodBoolean;
91
+ }, z.core.$strip>;
92
+ export declare const AffiliateEarningsBreakdownSchema: z.ZodObject<{
93
+ l1_amps: z.ZodNumber;
94
+ l2_amps: z.ZodNumber;
95
+ total_amps: z.ZodNumber;
96
+ l1_count: z.ZodNumber;
97
+ l2_count: z.ZodNumber;
98
+ }, z.core.$strip>;
99
+ export declare const AffiliateEarningsResponseSchema: z.ZodObject<{
100
+ affiliate_account: z.ZodString;
101
+ is_affiliate: z.ZodBoolean;
102
+ earnings: z.ZodObject<{
103
+ l1_amps: z.ZodNumber;
104
+ l2_amps: z.ZodNumber;
105
+ total_amps: z.ZodNumber;
106
+ l1_count: z.ZodNumber;
107
+ l2_count: z.ZodNumber;
108
+ }, z.core.$strip>;
109
+ users: z.ZodObject<{
110
+ items: z.ZodArray<z.ZodObject<{
111
+ account: z.ZodString;
112
+ level: z.ZodEnum<{
113
+ L1: "L1";
114
+ L2: "L2";
115
+ }>;
116
+ referred_by: z.ZodNullable<z.ZodString>;
117
+ total_amps: z.ZodNumber;
118
+ affiliate_amps_earned: z.ZodNumber;
119
+ total_volume: z.ZodNumber;
120
+ active: z.ZodBoolean;
121
+ }, z.core.$strip>>;
122
+ total_count: z.ZodNumber;
123
+ }, z.core.$strip>;
124
+ }, z.core.$strip>;
125
+ export type ReferralCodeValidation = z.infer<typeof ReferralCodeValidationSchema>;
126
+ export type RedeemReferralResponse = z.infer<typeof RedeemReferralResponseSchema>;
127
+ export type AccountReferral = z.infer<typeof AccountReferralSchema>;
128
+ export type ReferrerStats = z.infer<typeof ReferrerStatsSchema>;
129
+ export type UserReferral = z.infer<typeof UserReferralSchema>;
130
+ export type UserReferralsResponse = z.infer<typeof UserReferralsResponseSchema>;
131
+ export type AffiliateCode = z.infer<typeof AffiliateCodeSchema>;
132
+ export type AffiliateCodesResponse = z.infer<typeof AffiliateCodesResponseSchema>;
133
+ export type AffiliateReferredUser = z.infer<typeof AffiliateReferredUserSchema>;
134
+ export type AffiliateEarningsBreakdown = z.infer<typeof AffiliateEarningsBreakdownSchema>;
135
+ export type AffiliateEarningsResponse = z.infer<typeof AffiliateEarningsResponseSchema>;
136
+ //# sourceMappingURL=referrals.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"referrals.types.d.ts","sourceRoot":"","sources":["../../../src/read/referrals/referrals.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,MAAM,WAAW,wBAAyB,SAAQ,eAAe,EAAE,UAAU;IAC3E,eAAe,EAAE,MAAM,CAAC;CACzB;AAGD,eAAO,MAAM,4BAA4B;;;;iBAIvC,CAAC;AAGH,eAAO,MAAM,4BAA4B;;;iBAGvC,CAAC;AAGH,eAAO,MAAM,qBAAqB;;;;;;;iBAOhC,CAAC;AAGH,eAAO,MAAM,mBAAmB;;;;;;;iBAO9B,CAAC;AAMH,eAAO,MAAM,kBAAkB;;;;;;iBAM7B,CAAC;AAGH,eAAO,MAAM,2BAA2B;;;;;;kBAA8B,CAAC;AAGvE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;iBAS9B,CAAC;AAGH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;iBAIvC,CAAC;AAGH,eAAO,MAAM,2BAA2B;;;;;;;;;;;iBAQtC,CAAC;AAEH,eAAO,MAAM,gCAAgC;;;;;;iBAM3C,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;iBAQ1C,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAC1F,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC"}
@@ -0,0 +1,85 @@
1
+ import { z } from "zod/v4";
2
+ // GET /api/v1/referrals/code/{code}
3
+ export const ReferralCodeValidationSchema = z.object({
4
+ referral_code: z.string(),
5
+ is_valid: z.boolean(),
6
+ is_active: z.boolean(),
7
+ });
8
+ // POST /api/v1/referrals/redeem
9
+ export const RedeemReferralResponseSchema = z.object({
10
+ referral_code: z.string(),
11
+ account: z.string(),
12
+ });
13
+ // GET /api/v1/referrals/account/{account}
14
+ export const AccountReferralSchema = z.object({
15
+ account: z.string(),
16
+ referrer_account: z.string(),
17
+ referral_code: z.string(),
18
+ is_affiliate_referral: z.boolean(),
19
+ referred_at_ms: z.number(),
20
+ is_active: z.boolean(),
21
+ });
22
+ // GET /api/v1/referrals/stats/{account}
23
+ export const ReferrerStatsSchema = z.object({
24
+ referrer_account: z.string(),
25
+ total_referrals: z.number(),
26
+ total_codes_created: z.number(),
27
+ is_affiliate: z.boolean(),
28
+ codes: z.array(z.string()),
29
+ volume_threshold_met: z.boolean(),
30
+ });
31
+ // GET /api/v1/affiliates/codes/{account}
32
+ const ReferralCodeSourceSchema = z.enum(["admin", "auto", "predeposit", "unknown"]);
33
+ // GET /api/v1/referrals/users
34
+ export const UserReferralSchema = z.object({
35
+ account: z.string(),
36
+ referrer_account: z.string(),
37
+ referral_code: z.string(),
38
+ is_affiliate_referral: z.boolean(),
39
+ referred_at_ms: z.number(),
40
+ });
41
+ // GET /api/v1/referrals/users
42
+ export const UserReferralsResponseSchema = z.array(UserReferralSchema);
43
+ // GET /api/v1/affiliates/codes/{account}
44
+ export const AffiliateCodeSchema = z.object({
45
+ referral_code: z.string(),
46
+ owner_account: z.string(),
47
+ max_usage: z.number(),
48
+ usage_count: z.number(),
49
+ is_active: z.boolean(),
50
+ is_affiliate: z.boolean(),
51
+ source: ReferralCodeSourceSchema,
52
+ created_at_ms: z.number(),
53
+ });
54
+ // GET /api/v1/affiliates/codes/{account}
55
+ export const AffiliateCodesResponseSchema = z.object({
56
+ owner_account: z.string(),
57
+ codes: z.array(AffiliateCodeSchema),
58
+ volume_threshold_met: z.boolean(),
59
+ });
60
+ // GET /api/v1/affiliates/earnings/{account}
61
+ export const AffiliateReferredUserSchema = z.object({
62
+ account: z.string(),
63
+ level: z.enum(["L1", "L2"]),
64
+ referred_by: z.string().nullable(),
65
+ total_amps: z.number(),
66
+ affiliate_amps_earned: z.number(),
67
+ total_volume: z.number(),
68
+ active: z.boolean(),
69
+ });
70
+ export const AffiliateEarningsBreakdownSchema = z.object({
71
+ l1_amps: z.number(),
72
+ l2_amps: z.number(),
73
+ total_amps: z.number(),
74
+ l1_count: z.number(),
75
+ l2_count: z.number(),
76
+ });
77
+ export const AffiliateEarningsResponseSchema = z.object({
78
+ affiliate_account: z.string(),
79
+ is_affiliate: z.boolean(),
80
+ earnings: AffiliateEarningsBreakdownSchema,
81
+ users: z.object({
82
+ items: z.array(AffiliateReferredUserSchema),
83
+ total_count: z.number(),
84
+ }),
85
+ });
@@ -0,0 +1,19 @@
1
+ import { BaseReader } from "../base-reader";
2
+ import { AccountStreaksRequestArgs } from "./streaks.types";
3
+ export declare class StreaksReader extends BaseReader {
4
+ /**
5
+ * Get streak data for an owner including qualifying dates and grace days
6
+ * @param ownerAddr The owner address to get streak data for
7
+ * @returns The streak data with qualifying dates
8
+ */
9
+ getByOwner({ ownerAddr, fetchOptions }: AccountStreaksRequestArgs): Promise<{
10
+ owner: string;
11
+ currentStreak: number;
12
+ streakIpoints: number;
13
+ streakAmpsEstimate: number;
14
+ graceDaysAvailable: number;
15
+ graceDaysUsed: number;
16
+ qualifyingDates: string[];
17
+ }>;
18
+ }
19
+ //# sourceMappingURL=streaks.reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaks.reader.d.ts","sourceRoot":"","sources":["../../../src/read/streaks/streaks.reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAwB,MAAM,iBAAiB,CAAC;AAElF,qBAAa,aAAc,SAAQ,UAAU;IAC3C;;;;OAIG;IACG,UAAU,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,yBAAyB;;;;;;;;;CAYxE"}
@@ -0,0 +1,19 @@
1
+ import { BaseReader } from "../base-reader";
2
+ import { AccountStreaksSchema } from "./streaks.types";
3
+ export class StreaksReader extends BaseReader {
4
+ /**
5
+ * Get streak data for an owner including qualifying dates and grace days
6
+ * @param ownerAddr The owner address to get streak data for
7
+ * @returns The streak data with qualifying dates
8
+ */
9
+ async getByOwner({ ownerAddr, fetchOptions }) {
10
+ const queryParams = new URLSearchParams({ owner: ownerAddr });
11
+ const response = await this.getRequest({
12
+ schema: AccountStreaksSchema,
13
+ url: `${this.deps.config.tradingHttpUrl}/api/v1/streaks/account`,
14
+ queryParams,
15
+ options: fetchOptions,
16
+ });
17
+ return response.data;
18
+ }
19
+ }
@@ -0,0 +1,17 @@
1
+ import { z } from "zod/v4";
2
+ import { BaseRequestArgs } from "../base-reader";
3
+ export interface AccountStreaksRequestArgs extends BaseRequestArgs {
4
+ /** The owner address to get streak data for */
5
+ ownerAddr: string;
6
+ }
7
+ export declare const AccountStreaksSchema: z.ZodObject<{
8
+ owner: z.ZodString;
9
+ currentStreak: z.ZodNumber;
10
+ streakIpoints: z.ZodNumber;
11
+ streakAmpsEstimate: z.ZodNumber;
12
+ graceDaysAvailable: z.ZodNumber;
13
+ graceDaysUsed: z.ZodNumber;
14
+ qualifyingDates: z.ZodArray<z.ZodString>;
15
+ }, z.core.$strip>;
16
+ export type AccountStreaks = z.infer<typeof AccountStreaksSchema>;
17
+ //# sourceMappingURL=streaks.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaks.types.d.ts","sourceRoot":"","sources":["../../../src/read/streaks/streaks.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,WAAW,yBAA0B,SAAQ,eAAe;IAChE,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,oBAAoB;;;;;;;;iBAQ/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { z } from "zod/v4";
2
+ export const AccountStreaksSchema = z.object({
3
+ owner: z.string(),
4
+ currentStreak: z.number(),
5
+ streakIpoints: z.number(),
6
+ streakAmpsEstimate: z.number(),
7
+ graceDaysAvailable: z.number(),
8
+ graceDaysUsed: z.number(),
9
+ qualifyingDates: z.array(z.string()),
10
+ });
@@ -0,0 +1,21 @@
1
+ import { BaseReader } from "../base-reader";
2
+ import { TierInfoRequestArgs } from "./tier.types";
3
+ export declare class TierReader extends BaseReader {
4
+ /**
5
+ * Get tier info for an owner based on percentile-based thresholds
6
+ * @param ownerAddr The owner address to get tier info for
7
+ * @returns Tier info with progress toward each tier
8
+ */
9
+ getByOwner({ ownerAddr, fetchOptions }: TierInfoRequestArgs): Promise<{
10
+ owner: string;
11
+ total_amps: number;
12
+ rank: number | null;
13
+ current_tier: string | null;
14
+ tiers: {
15
+ name: string;
16
+ hz_threshold: number;
17
+ progress: number;
18
+ }[];
19
+ }>;
20
+ }
21
+ //# sourceMappingURL=tier.reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tier.reader.d.ts","sourceRoot":"","sources":["../../../src/read/tier/tier.reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAkB,MAAM,cAAc,CAAC;AAEnE,qBAAa,UAAW,SAAQ,UAAU;IACxC;;;;OAIG;IACG,UAAU,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,mBAAmB;;;;;;;;;;;CAYlE"}
@@ -0,0 +1,19 @@
1
+ import { BaseReader } from "../base-reader";
2
+ import { TierInfoSchema } from "./tier.types";
3
+ export class TierReader extends BaseReader {
4
+ /**
5
+ * Get tier info for an owner based on percentile-based thresholds
6
+ * @param ownerAddr The owner address to get tier info for
7
+ * @returns Tier info with progress toward each tier
8
+ */
9
+ async getByOwner({ ownerAddr, fetchOptions }) {
10
+ const queryParams = new URLSearchParams({ owner: ownerAddr });
11
+ const response = await this.getRequest({
12
+ schema: TierInfoSchema,
13
+ url: `${this.deps.config.tradingHttpUrl}/api/v1/points/tier`,
14
+ queryParams,
15
+ options: fetchOptions,
16
+ });
17
+ return response.data;
18
+ }
19
+ }
@@ -0,0 +1,25 @@
1
+ import { z } from "zod/v4";
2
+ import { BaseRequestArgs } from "../base-reader";
3
+ export interface TierInfoRequestArgs extends BaseRequestArgs {
4
+ /** The owner address to get tier info for */
5
+ ownerAddr: string;
6
+ }
7
+ export declare const TierThresholdSchema: z.ZodObject<{
8
+ name: z.ZodString;
9
+ hz_threshold: z.ZodNumber;
10
+ progress: z.ZodNumber;
11
+ }, z.core.$strip>;
12
+ export declare const TierInfoSchema: z.ZodObject<{
13
+ owner: z.ZodString;
14
+ total_amps: z.ZodNumber;
15
+ rank: z.ZodNullable<z.ZodNumber>;
16
+ current_tier: z.ZodNullable<z.ZodString>;
17
+ tiers: z.ZodArray<z.ZodObject<{
18
+ name: z.ZodString;
19
+ hz_threshold: z.ZodNumber;
20
+ progress: z.ZodNumber;
21
+ }, z.core.$strip>>;
22
+ }, z.core.$strip>;
23
+ export type TierThreshold = z.infer<typeof TierThresholdSchema>;
24
+ export type TierInfo = z.infer<typeof TierInfoSchema>;
25
+ //# sourceMappingURL=tier.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tier.types.d.ts","sourceRoot":"","sources":["../../../src/read/tier/tier.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,mBAAmB;;;;iBAI9B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;iBAMzB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { z } from "zod/v4";
2
+ export const TierThresholdSchema = z.object({
3
+ name: z.string(),
4
+ hz_threshold: z.number(),
5
+ progress: z.number(),
6
+ });
7
+ export const TierInfoSchema = z.object({
8
+ owner: z.string(),
9
+ total_amps: z.number(),
10
+ rank: z.number().nullable(),
11
+ current_tier: z.string().nullable(),
12
+ tiers: z.array(TierThresholdSchema),
13
+ });
@@ -0,0 +1,18 @@
1
+ import { BaseReader } from "../base-reader";
2
+ import { OwnerTradingAmpsRequestArgs } from "./trading-amps.types";
3
+ export declare class TradingAmpsReader extends BaseReader {
4
+ /**
5
+ * Get aggregated trading Hz (Amps) for an owner across all their active subaccounts
6
+ * @param ownerAddr The owner address to get trading Hz for
7
+ * @returns The aggregated trading Hz with per-subaccount breakdown
8
+ */
9
+ getByOwner({ ownerAddr, season, days, fetchOptions }: OwnerTradingAmpsRequestArgs): Promise<{
10
+ owner: string;
11
+ total_amps: number;
12
+ breakdown: {
13
+ account: string;
14
+ total_amps: number;
15
+ }[] | null;
16
+ }>;
17
+ }
18
+ //# sourceMappingURL=trading-amps.reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trading-amps.reader.d.ts","sourceRoot":"","sources":["../../../src/read/trading-amps/trading-amps.reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,2BAA2B,EAA0B,MAAM,sBAAsB,CAAC;AAE3F,qBAAa,iBAAkB,SAAQ,UAAU;IAC/C;;;;OAIG;IACG,UAAU,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,2BAA2B;;;;;;;;CAcxF"}
@@ -0,0 +1,23 @@
1
+ import { BaseReader } from "../base-reader";
2
+ import { OwnerTradingAmpsSchema } from "./trading-amps.types";
3
+ export class TradingAmpsReader extends BaseReader {
4
+ /**
5
+ * Get aggregated trading Hz (Amps) for an owner across all their active subaccounts
6
+ * @param ownerAddr The owner address to get trading Hz for
7
+ * @returns The aggregated trading Hz with per-subaccount breakdown
8
+ */
9
+ async getByOwner({ ownerAddr, season, days, fetchOptions }) {
10
+ const queryParams = new URLSearchParams({ owner: ownerAddr });
11
+ if (season)
12
+ queryParams.set("season", season);
13
+ if (days)
14
+ queryParams.set("days", days.toString());
15
+ const response = await this.getRequest({
16
+ schema: OwnerTradingAmpsSchema,
17
+ url: `${this.deps.config.tradingHttpUrl}/api/v1/points/trading/amps`,
18
+ queryParams,
19
+ options: fetchOptions,
20
+ });
21
+ return response.data;
22
+ }
23
+ }
@@ -0,0 +1,25 @@
1
+ import { z } from "zod/v4";
2
+ import { BaseRequestArgs } from "../base-reader";
3
+ export interface OwnerTradingAmpsRequestArgs extends BaseRequestArgs {
4
+ /** The owner address to get aggregated trading Hz (Amps) for */
5
+ ownerAddr: string;
6
+ /** Optional season name to filter by (e.g. "season1"). Omit to aggregate across all seasons. */
7
+ season?: string;
8
+ /** Number of days to look back. 1 = today only, 7 = last week, etc. Omit for lifetime totals. */
9
+ days?: number;
10
+ }
11
+ export declare const SubaccountAmpsSchema: z.ZodObject<{
12
+ account: z.ZodString;
13
+ total_amps: z.ZodNumber;
14
+ }, z.core.$strip>;
15
+ export declare const OwnerTradingAmpsSchema: z.ZodObject<{
16
+ owner: z.ZodString;
17
+ total_amps: z.ZodNumber;
18
+ breakdown: z.ZodNullable<z.ZodArray<z.ZodObject<{
19
+ account: z.ZodString;
20
+ total_amps: z.ZodNumber;
21
+ }, z.core.$strip>>>;
22
+ }, z.core.$strip>;
23
+ export type SubaccountAmps = z.infer<typeof SubaccountAmpsSchema>;
24
+ export type OwnerTradingAmps = z.infer<typeof OwnerTradingAmpsSchema>;
25
+ //# sourceMappingURL=trading-amps.types.d.ts.map