@compass-labs/api-sdk 2.2.102 → 2.2.104

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 (211) hide show
  1. package/dist/commonjs/lib/config.d.ts +2 -2
  2. package/dist/commonjs/lib/config.js +2 -2
  3. package/dist/commonjs/lib/encodings.d.ts +10 -9
  4. package/dist/commonjs/lib/encodings.d.ts.map +1 -1
  5. package/dist/commonjs/lib/encodings.js +29 -13
  6. package/dist/commonjs/lib/encodings.js.map +1 -1
  7. package/dist/commonjs/models/components/accountsummary.d.ts +3 -7
  8. package/dist/commonjs/models/components/accountsummary.d.ts.map +1 -1
  9. package/dist/commonjs/models/components/accountsummary.js.map +1 -1
  10. package/dist/commonjs/models/components/builder.d.ts +1 -1
  11. package/dist/commonjs/models/components/collateralposition.d.ts +3 -7
  12. package/dist/commonjs/models/components/collateralposition.d.ts.map +1 -1
  13. package/dist/commonjs/models/components/collateralposition.js.map +1 -1
  14. package/dist/commonjs/models/components/creditborrowparams.d.ts +3 -7
  15. package/dist/commonjs/models/components/creditborrowparams.d.ts.map +1 -1
  16. package/dist/commonjs/models/components/creditborrowparams.js.map +1 -1
  17. package/dist/commonjs/models/components/creditborrowrequest.d.ts +3 -7
  18. package/dist/commonjs/models/components/creditborrowrequest.d.ts.map +1 -1
  19. package/dist/commonjs/models/components/creditborrowrequest.js.map +1 -1
  20. package/dist/commonjs/models/components/creditenablecollateralparams.d.ts +3 -7
  21. package/dist/commonjs/models/components/creditenablecollateralparams.d.ts.map +1 -1
  22. package/dist/commonjs/models/components/creditenablecollateralparams.js.map +1 -1
  23. package/dist/commonjs/models/components/creditloopedpositionsresponse.d.ts +3 -3
  24. package/dist/commonjs/models/components/creditlooprequest.d.ts +3 -7
  25. package/dist/commonjs/models/components/creditlooprequest.d.ts.map +1 -1
  26. package/dist/commonjs/models/components/creditlooprequest.js.map +1 -1
  27. package/dist/commonjs/models/components/creditloopresponse.d.ts +5 -5
  28. package/dist/commonjs/models/components/creditloopresponse.js +3 -3
  29. package/dist/commonjs/models/components/creditloopresponse.js.map +1 -1
  30. package/dist/commonjs/models/components/creditprotocol.d.ts +6 -14
  31. package/dist/commonjs/models/components/creditprotocol.d.ts.map +1 -1
  32. package/dist/commonjs/models/components/creditprotocol.js +3 -7
  33. package/dist/commonjs/models/components/creditprotocol.js.map +1 -1
  34. package/dist/commonjs/models/components/creditrepayparams.d.ts +3 -7
  35. package/dist/commonjs/models/components/creditrepayparams.d.ts.map +1 -1
  36. package/dist/commonjs/models/components/creditrepayparams.js.map +1 -1
  37. package/dist/commonjs/models/components/creditrepayrequest.d.ts +3 -7
  38. package/dist/commonjs/models/components/creditrepayrequest.d.ts.map +1 -1
  39. package/dist/commonjs/models/components/creditrepayrequest.js.map +1 -1
  40. package/dist/commonjs/models/components/creditsupplyparams.d.ts +3 -7
  41. package/dist/commonjs/models/components/creditsupplyparams.d.ts.map +1 -1
  42. package/dist/commonjs/models/components/creditsupplyparams.js.map +1 -1
  43. package/dist/commonjs/models/components/creditunlooprequest.d.ts +3 -7
  44. package/dist/commonjs/models/components/creditunlooprequest.d.ts.map +1 -1
  45. package/dist/commonjs/models/components/creditunlooprequest.js.map +1 -1
  46. package/dist/commonjs/models/components/creditunloopresponse.d.ts +5 -5
  47. package/dist/commonjs/models/components/creditunloopresponse.js +3 -3
  48. package/dist/commonjs/models/components/creditunloopresponse.js.map +1 -1
  49. package/dist/commonjs/models/components/creditwithdrawparams.d.ts +3 -7
  50. package/dist/commonjs/models/components/creditwithdrawparams.d.ts.map +1 -1
  51. package/dist/commonjs/models/components/creditwithdrawparams.js.map +1 -1
  52. package/dist/commonjs/models/components/debtposition.d.ts +3 -7
  53. package/dist/commonjs/models/components/debtposition.d.ts.map +1 -1
  54. package/dist/commonjs/models/components/debtposition.js.map +1 -1
  55. package/dist/commonjs/models/components/loopedposition.d.ts +15 -7
  56. package/dist/commonjs/models/components/loopedposition.d.ts.map +1 -1
  57. package/dist/commonjs/models/components/loopedposition.js +6 -0
  58. package/dist/commonjs/models/components/loopedposition.js.map +1 -1
  59. package/dist/commonjs/models/components/loopedpositioncurrentstate.d.ts +3 -3
  60. package/dist/commonjs/models/components/loopedpositioncurrentstate.js +1 -1
  61. package/dist/commonjs/models/components/rebalancetarget.d.ts +3 -7
  62. package/dist/commonjs/models/components/rebalancetarget.d.ts.map +1 -1
  63. package/dist/commonjs/models/components/rebalancetarget.js.map +1 -1
  64. package/dist/commonjs/models/components/rebalancetargetpreview.d.ts +3 -7
  65. package/dist/commonjs/models/components/rebalancetargetpreview.d.ts.map +1 -1
  66. package/dist/commonjs/models/components/rebalancetargetpreview.js.map +1 -1
  67. package/dist/esm/lib/config.d.ts +2 -2
  68. package/dist/esm/lib/config.js +2 -2
  69. package/dist/esm/lib/encodings.d.ts +10 -9
  70. package/dist/esm/lib/encodings.d.ts.map +1 -1
  71. package/dist/esm/lib/encodings.js +29 -13
  72. package/dist/esm/lib/encodings.js.map +1 -1
  73. package/dist/esm/models/components/accountsummary.d.ts +3 -7
  74. package/dist/esm/models/components/accountsummary.d.ts.map +1 -1
  75. package/dist/esm/models/components/accountsummary.js.map +1 -1
  76. package/dist/esm/models/components/builder.d.ts +1 -1
  77. package/dist/esm/models/components/collateralposition.d.ts +3 -7
  78. package/dist/esm/models/components/collateralposition.d.ts.map +1 -1
  79. package/dist/esm/models/components/collateralposition.js.map +1 -1
  80. package/dist/esm/models/components/creditborrowparams.d.ts +3 -7
  81. package/dist/esm/models/components/creditborrowparams.d.ts.map +1 -1
  82. package/dist/esm/models/components/creditborrowparams.js.map +1 -1
  83. package/dist/esm/models/components/creditborrowrequest.d.ts +3 -7
  84. package/dist/esm/models/components/creditborrowrequest.d.ts.map +1 -1
  85. package/dist/esm/models/components/creditborrowrequest.js.map +1 -1
  86. package/dist/esm/models/components/creditenablecollateralparams.d.ts +3 -7
  87. package/dist/esm/models/components/creditenablecollateralparams.d.ts.map +1 -1
  88. package/dist/esm/models/components/creditenablecollateralparams.js.map +1 -1
  89. package/dist/esm/models/components/creditloopedpositionsresponse.d.ts +3 -3
  90. package/dist/esm/models/components/creditlooprequest.d.ts +3 -7
  91. package/dist/esm/models/components/creditlooprequest.d.ts.map +1 -1
  92. package/dist/esm/models/components/creditlooprequest.js.map +1 -1
  93. package/dist/esm/models/components/creditloopresponse.d.ts +5 -5
  94. package/dist/esm/models/components/creditloopresponse.js +3 -3
  95. package/dist/esm/models/components/creditloopresponse.js.map +1 -1
  96. package/dist/esm/models/components/creditprotocol.d.ts +6 -14
  97. package/dist/esm/models/components/creditprotocol.d.ts.map +1 -1
  98. package/dist/esm/models/components/creditprotocol.js +3 -7
  99. package/dist/esm/models/components/creditprotocol.js.map +1 -1
  100. package/dist/esm/models/components/creditrepayparams.d.ts +3 -7
  101. package/dist/esm/models/components/creditrepayparams.d.ts.map +1 -1
  102. package/dist/esm/models/components/creditrepayparams.js.map +1 -1
  103. package/dist/esm/models/components/creditrepayrequest.d.ts +3 -7
  104. package/dist/esm/models/components/creditrepayrequest.d.ts.map +1 -1
  105. package/dist/esm/models/components/creditrepayrequest.js.map +1 -1
  106. package/dist/esm/models/components/creditsupplyparams.d.ts +3 -7
  107. package/dist/esm/models/components/creditsupplyparams.d.ts.map +1 -1
  108. package/dist/esm/models/components/creditsupplyparams.js.map +1 -1
  109. package/dist/esm/models/components/creditunlooprequest.d.ts +3 -7
  110. package/dist/esm/models/components/creditunlooprequest.d.ts.map +1 -1
  111. package/dist/esm/models/components/creditunlooprequest.js.map +1 -1
  112. package/dist/esm/models/components/creditunloopresponse.d.ts +5 -5
  113. package/dist/esm/models/components/creditunloopresponse.js +3 -3
  114. package/dist/esm/models/components/creditunloopresponse.js.map +1 -1
  115. package/dist/esm/models/components/creditwithdrawparams.d.ts +3 -7
  116. package/dist/esm/models/components/creditwithdrawparams.d.ts.map +1 -1
  117. package/dist/esm/models/components/creditwithdrawparams.js.map +1 -1
  118. package/dist/esm/models/components/debtposition.d.ts +3 -7
  119. package/dist/esm/models/components/debtposition.d.ts.map +1 -1
  120. package/dist/esm/models/components/debtposition.js.map +1 -1
  121. package/dist/esm/models/components/loopedposition.d.ts +15 -7
  122. package/dist/esm/models/components/loopedposition.d.ts.map +1 -1
  123. package/dist/esm/models/components/loopedposition.js +6 -0
  124. package/dist/esm/models/components/loopedposition.js.map +1 -1
  125. package/dist/esm/models/components/loopedpositioncurrentstate.d.ts +3 -3
  126. package/dist/esm/models/components/loopedpositioncurrentstate.js +1 -1
  127. package/dist/esm/models/components/rebalancetarget.d.ts +3 -7
  128. package/dist/esm/models/components/rebalancetarget.d.ts.map +1 -1
  129. package/dist/esm/models/components/rebalancetarget.js.map +1 -1
  130. package/dist/esm/models/components/rebalancetargetpreview.d.ts +3 -7
  131. package/dist/esm/models/components/rebalancetargetpreview.d.ts.map +1 -1
  132. package/dist/esm/models/components/rebalancetargetpreview.js.map +1 -1
  133. package/docs/models/components/accountsummary.md +11 -11
  134. package/docs/models/components/builder.md +4 -4
  135. package/docs/models/components/collateralposition.md +17 -17
  136. package/docs/models/components/creditborrowparams.md +11 -11
  137. package/docs/models/components/creditborrowrequest.md +21 -21
  138. package/docs/models/components/creditenablecollateralparams.md +7 -7
  139. package/docs/models/components/creditloopedpositionsresponse.md +6 -6
  140. package/docs/models/components/creditlooprequest.md +19 -19
  141. package/docs/models/components/creditloopresponse.md +9 -9
  142. package/docs/models/components/creditloopresponseswapprovider.md +3 -3
  143. package/docs/models/components/creditprotocol.md +3 -7
  144. package/docs/models/components/creditrepayparams.md +10 -10
  145. package/docs/models/components/creditrepayrequest.md +20 -20
  146. package/docs/models/components/creditsupplyparams.md +9 -9
  147. package/docs/models/components/creditunlooprequest.md +17 -17
  148. package/docs/models/components/creditunloopresponse.md +9 -9
  149. package/docs/models/components/creditunloopresponseswapprovider.md +3 -3
  150. package/docs/models/components/creditwithdrawparams.md +9 -9
  151. package/docs/models/components/debtposition.md +16 -16
  152. package/docs/models/components/loopedposition.md +17 -14
  153. package/docs/models/components/loopedpositioncurrentstate.md +1 -1
  154. package/docs/models/components/loopedpositioncurrentstatehealthfactorscope.md +1 -1
  155. package/docs/models/components/rebalancetarget.md +10 -10
  156. package/docs/models/components/rebalancetargetpreview.md +16 -16
  157. package/examples/node_modules/tsx/dist/cjs/api/index.cjs +1 -1
  158. package/examples/node_modules/tsx/dist/cjs/api/index.mjs +1 -1
  159. package/examples/node_modules/tsx/dist/cjs/index.cjs +1 -1
  160. package/examples/node_modules/tsx/dist/cjs/index.mjs +1 -1
  161. package/examples/node_modules/tsx/dist/cli.cjs +1 -1
  162. package/examples/node_modules/tsx/dist/cli.mjs +1 -1
  163. package/examples/node_modules/tsx/dist/esm/api/index.cjs +1 -1
  164. package/examples/node_modules/tsx/dist/esm/api/index.mjs +1 -1
  165. package/examples/node_modules/tsx/dist/esm/index.cjs +1 -1
  166. package/examples/node_modules/tsx/dist/esm/index.mjs +1 -1
  167. package/examples/node_modules/tsx/dist/index-D1vYaNWZ.cjs +14 -0
  168. package/examples/node_modules/tsx/dist/index-DCefr8NP.mjs +14 -0
  169. package/examples/node_modules/tsx/dist/loader.cjs +1 -1
  170. package/examples/node_modules/tsx/dist/loader.mjs +1 -1
  171. package/examples/node_modules/tsx/dist/package-B1lIY_Tn.cjs +1 -0
  172. package/examples/node_modules/tsx/dist/package-BL7Whz21.mjs +1 -0
  173. package/examples/node_modules/tsx/dist/{register-C9AniqUt.mjs → register-DHgpdRjs.mjs} +1 -1
  174. package/examples/node_modules/tsx/dist/{register-Ciecs-Zx.cjs → register-DjPW2kSr.cjs} +2 -2
  175. package/examples/node_modules/tsx/dist/{register-C557imBs.cjs → register-OY9cqBEN.cjs} +1 -1
  176. package/examples/node_modules/tsx/dist/{register-C4vWVmug.mjs → register-SoqaU4rg.mjs} +1 -1
  177. package/examples/node_modules/tsx/dist/repl.cjs +1 -1
  178. package/examples/node_modules/tsx/dist/repl.mjs +1 -1
  179. package/examples/node_modules/tsx/dist/{require-DDxgG93A.cjs → require-Blr_8TcJ.cjs} +1 -1
  180. package/examples/node_modules/tsx/dist/{require-CywAB2e6.mjs → require-Cuv-0BLU.mjs} +1 -1
  181. package/examples/node_modules/tsx/package.json +1 -1
  182. package/examples/package-lock.json +3 -3
  183. package/openapi_prepped_for_speakeasy.json +51 -15
  184. package/package.json +1 -1
  185. package/src/lib/config.ts +2 -2
  186. package/src/lib/encodings.ts +58 -23
  187. package/src/models/components/accountsummary.ts +3 -7
  188. package/src/models/components/builder.ts +1 -1
  189. package/src/models/components/collateralposition.ts +3 -7
  190. package/src/models/components/creditborrowparams.ts +3 -7
  191. package/src/models/components/creditborrowrequest.ts +3 -7
  192. package/src/models/components/creditenablecollateralparams.ts +3 -7
  193. package/src/models/components/creditloopedpositionsresponse.ts +3 -3
  194. package/src/models/components/creditlooprequest.ts +3 -7
  195. package/src/models/components/creditloopresponse.ts +5 -5
  196. package/src/models/components/creditprotocol.ts +6 -14
  197. package/src/models/components/creditrepayparams.ts +3 -7
  198. package/src/models/components/creditrepayrequest.ts +3 -7
  199. package/src/models/components/creditsupplyparams.ts +3 -7
  200. package/src/models/components/creditunlooprequest.ts +3 -7
  201. package/src/models/components/creditunloopresponse.ts +5 -5
  202. package/src/models/components/creditwithdrawparams.ts +3 -7
  203. package/src/models/components/debtposition.ts +3 -7
  204. package/src/models/components/loopedposition.ts +21 -7
  205. package/src/models/components/loopedpositioncurrentstate.ts +3 -3
  206. package/src/models/components/rebalancetarget.ts +3 -7
  207. package/src/models/components/rebalancetargetpreview.ts +3 -7
  208. package/examples/node_modules/tsx/dist/index-6kqi0x0U.cjs +0 -14
  209. package/examples/node_modules/tsx/dist/index-DQtFPMc2.mjs +0 -14
  210. package/examples/node_modules/tsx/dist/package-B13bX4zz.mjs +0 -1
  211. package/examples/node_modules/tsx/dist/package-sd2gMcZx.cjs +0 -1
@@ -12,10 +12,41 @@ export class EncodingError extends Error {
12
12
  }
13
13
  }
14
14
 
15
+ export type CharEncoding = "percent" | "percentExceptReserved" | "none";
16
+
17
+ const reservedEscapes = /%(2[346bcf]|3[abdf]|40|5[bd])/gi;
18
+
19
+ function encodeKeyChars(
20
+ v: string,
21
+ charEncoding: CharEncoding | undefined,
22
+ ): string {
23
+ return encodeChars(
24
+ v,
25
+ charEncoding === "percentExceptReserved" ? "percent" : charEncoding,
26
+ );
27
+ }
28
+
29
+ function encodeChars(
30
+ v: string,
31
+ charEncoding: CharEncoding | undefined,
32
+ ): string {
33
+ switch (charEncoding) {
34
+ case "percent":
35
+ return encodeURIComponent(v);
36
+ case "percentExceptReserved":
37
+ return encodeURIComponent(v).replace(
38
+ reservedEscapes,
39
+ (m) => decodeURIComponent(m),
40
+ );
41
+ default:
42
+ return v;
43
+ }
44
+ }
45
+
15
46
  export function encodeMatrix(
16
47
  key: string,
17
48
  value: unknown,
18
- options?: { explode?: boolean; charEncoding?: "percent" | "none" },
49
+ options?: { explode?: boolean; charEncoding?: CharEncoding },
19
50
  ): string | undefined {
20
51
  let out = "";
21
52
  const pairs: [string, unknown][] = options?.explode
@@ -27,7 +58,7 @@ export function encodeMatrix(
27
58
  }
28
59
 
29
60
  const encodeString = (v: string) => {
30
- return options?.charEncoding === "percent" ? encodeURIComponent(v) : v;
61
+ return encodeChars(v, options?.charEncoding);
31
62
  };
32
63
  const encodeValue = (v: unknown) => encodeString(serializeValue(v));
33
64
 
@@ -52,7 +83,7 @@ export function encodeMatrix(
52
83
  return;
53
84
  }
54
85
 
55
- const keyPrefix = encodeString(pk);
86
+ const keyPrefix = encodeKeyChars(pk, options?.charEncoding);
56
87
  tmp = `${keyPrefix}=${encValue}`;
57
88
  // trim trailing '=' if value was empty
58
89
  if (tmp === `${keyPrefix}=`) {
@@ -73,7 +104,7 @@ export function encodeMatrix(
73
104
  export function encodeLabel(
74
105
  key: string,
75
106
  value: unknown,
76
- options?: { explode?: boolean; charEncoding?: "percent" | "none" },
107
+ options?: { explode?: boolean; charEncoding?: CharEncoding },
77
108
  ): string | undefined {
78
109
  let out = "";
79
110
  const pairs: [string, unknown][] = options?.explode
@@ -85,7 +116,7 @@ export function encodeLabel(
85
116
  }
86
117
 
87
118
  const encodeString = (v: string) => {
88
- return options?.charEncoding === "percent" ? encodeURIComponent(v) : v;
119
+ return encodeChars(v, options?.charEncoding);
89
120
  };
90
121
  const encodeValue = (v: unknown) => encodeString(serializeValue(v));
91
122
 
@@ -103,7 +134,7 @@ export function encodeLabel(
103
134
  encValue = mapped?.join("").slice(1);
104
135
  } else {
105
136
  const k = options?.explode && isPlainObject(value)
106
- ? `${encodeString(pk)}=`
137
+ ? `${encodeKeyChars(pk, options?.charEncoding)}=`
107
138
  : "";
108
139
  encValue = `${k}${encodeValue(pv)}`;
109
140
  }
@@ -117,14 +148,14 @@ export function encodeLabel(
117
148
  type FormEncoder = (
118
149
  key: string,
119
150
  value: unknown,
120
- options?: { explode?: boolean; charEncoding?: "percent" | "none" },
151
+ options?: { explode?: boolean; charEncoding?: CharEncoding },
121
152
  ) => string | undefined;
122
153
 
123
154
  function formEncoder(sep: string): FormEncoder {
124
155
  return (
125
156
  key: string,
126
157
  value: unknown,
127
- options?: { explode?: boolean; charEncoding?: "percent" | "none" },
158
+ options?: { explode?: boolean; charEncoding?: CharEncoding },
128
159
  ) => {
129
160
  let out = "";
130
161
  const pairs: [string, unknown][] = options?.explode
@@ -136,7 +167,7 @@ function formEncoder(sep: string): FormEncoder {
136
167
  }
137
168
 
138
169
  const encodeString = (v: string) => {
139
- return options?.charEncoding === "percent" ? encodeURIComponent(v) : v;
170
+ return encodeChars(v, options?.charEncoding);
140
171
  };
141
172
 
142
173
  const encodeValue = (v: unknown) => encodeString(serializeValue(v));
@@ -163,7 +194,7 @@ function formEncoder(sep: string): FormEncoder {
163
194
  return;
164
195
  }
165
196
 
166
- tmp = `${encodeString(pk)}=${encValue}`;
197
+ tmp = `${encodeKeyChars(pk, options?.charEncoding)}=${encValue}`;
167
198
 
168
199
  // If we end up with the nothing then skip forward
169
200
  if (!tmp || tmp === "=") {
@@ -184,7 +215,7 @@ export const encodePipeDelimited = formEncoder("|");
184
215
  export function encodeBodyForm(
185
216
  key: string,
186
217
  value: unknown,
187
- options?: { explode?: boolean; charEncoding?: "percent" | "none" },
218
+ options?: { explode?: boolean; charEncoding?: CharEncoding },
188
219
  ): string {
189
220
  let out = "";
190
221
  const pairs: [string, unknown][] = options?.explode
@@ -192,7 +223,7 @@ export function encodeBodyForm(
192
223
  : [[key, value]];
193
224
 
194
225
  const encodeString = (v: string) => {
195
- return options?.charEncoding === "percent" ? encodeURIComponent(v) : v;
226
+ return encodeChars(v, options?.charEncoding);
196
227
  };
197
228
 
198
229
  const encodeValue = (v: unknown) => encodeString(serializeValue(v));
@@ -211,7 +242,7 @@ export function encodeBodyForm(
211
242
  encValue = `${encodeValue(pv)}`;
212
243
  }
213
244
 
214
- tmp = `${encodeString(pk)}=${encValue}`;
245
+ tmp = `${encodeKeyChars(pk, options?.charEncoding)}=${encValue}`;
215
246
 
216
247
  // If we end up with the nothing then skip forward
217
248
  if (!tmp || tmp === "=") {
@@ -227,7 +258,7 @@ export function encodeBodyForm(
227
258
  export function encodeDeepObject(
228
259
  key: string,
229
260
  value: unknown,
230
- options?: { charEncoding?: "percent" | "none" },
261
+ options?: { charEncoding?: CharEncoding },
231
262
  ): string | undefined {
232
263
  if (value == null) {
233
264
  return;
@@ -245,7 +276,7 @@ export function encodeDeepObject(
245
276
  export function encodeDeepObjectObject(
246
277
  key: string,
247
278
  value: unknown,
248
- options?: { charEncoding?: "percent" | "none" },
279
+ options?: { charEncoding?: CharEncoding },
249
280
  ): string | undefined {
250
281
  if (value == null) {
251
282
  return;
@@ -254,7 +285,7 @@ export function encodeDeepObjectObject(
254
285
  let out = "";
255
286
 
256
287
  const encodeString = (v: string) => {
257
- return options?.charEncoding === "percent" ? encodeURIComponent(v) : v;
288
+ return encodeChars(v, options?.charEncoding);
258
289
  };
259
290
 
260
291
  if (!isPlainObject(value)) {
@@ -278,7 +309,9 @@ export function encodeDeepObjectObject(
278
309
 
279
310
  const pairs: unknown[] = Array.isArray(cv) ? cv : [cv];
280
311
  const encoded = mapDefined(pairs, (v) => {
281
- return `${encodeString(pk)}=${encodeString(serializeValue(v))}`;
312
+ return `${encodeKeyChars(pk, options?.charEncoding)}=${
313
+ encodeString(serializeValue(v))
314
+ }`;
282
315
  })?.join("&");
283
316
 
284
317
  out += encoded == null ? "" : `&${encoded}`;
@@ -290,25 +323,27 @@ export function encodeDeepObjectObject(
290
323
  export function encodeJSON(
291
324
  key: string,
292
325
  value: unknown,
293
- options?: { explode?: boolean; charEncoding?: "percent" | "none" },
326
+ options?: { explode?: boolean; charEncoding?: CharEncoding },
294
327
  ): string | undefined {
295
328
  if (typeof value === "undefined") {
296
329
  return;
297
330
  }
298
331
 
299
332
  const encodeString = (v: string) => {
300
- return options?.charEncoding === "percent" ? encodeURIComponent(v) : v;
333
+ return encodeChars(v, options?.charEncoding);
301
334
  };
302
335
 
303
336
  const encVal = encodeString(JSON.stringify(value, jsonReplacer));
304
337
 
305
- return options?.explode ? encVal : `${encodeString(key)}=${encVal}`;
338
+ return options?.explode
339
+ ? encVal
340
+ : `${encodeKeyChars(key, options?.charEncoding)}=${encVal}`;
306
341
  }
307
342
 
308
343
  export const encodeSimple = (
309
344
  key: string,
310
345
  value: unknown,
311
- options?: { explode?: boolean; charEncoding?: "percent" | "none" },
346
+ options?: { explode?: boolean; charEncoding?: CharEncoding },
312
347
  ): string | undefined => {
313
348
  let out = "";
314
349
  const pairs: [string, unknown][] = options?.explode
@@ -320,7 +355,7 @@ export const encodeSimple = (
320
355
  }
321
356
 
322
357
  const encodeString = (v: string) => {
323
- return options?.charEncoding === "percent" ? encodeURIComponent(v) : v;
358
+ return encodeChars(v, options?.charEncoding);
324
359
  };
325
360
  const encodeValue = (v: unknown) => encodeString(serializeValue(v));
326
361
 
@@ -426,7 +461,7 @@ export function queryJoin(...args: (string | undefined)[]): string {
426
461
 
427
462
  type QueryEncoderOptions = {
428
463
  explode?: boolean;
429
- charEncoding?: "percent" | "none";
464
+ charEncoding?: CharEncoding;
430
465
  allowEmptyValue?: string[];
431
466
  };
432
467
 
@@ -39,13 +39,9 @@ export type AccountSummary = {
39
39
  * chain's Aave V3 deployment); MORPHO on Ethereum, Base, Arbitrum and HyperEVM
40
40
  * (where it is Felix); EULER on Ethereum, Base, Arbitrum and BSC.
41
41
  *
42
- * All three support ``/v2/credit/loop`` and ``/v2/credit/unloop``. EULER does
43
- * NOT: ``/v2/credit/rebalance`` rejects it with a 422, and
44
- * ``/v2/credit/looped_positions`` covers only AAVE and MORPHO — an Euler loop is
45
- * silently absent there rather than an error, so read it from
46
- * ``/v2/credit/positions`` instead. (EULER still appears in the
47
- * ``looped_positions`` response enum because this enum is shared; it is never
48
- * emitted.)
42
+ * All three support ``/v2/credit/loop``, ``/v2/credit/unloop`` and
43
+ * ``/v2/credit/looped_positions``. The one gap is ``/v2/credit/rebalance``,
44
+ * which rejects EULER with a 422.
49
45
  */
50
46
  protocol?: CreditProtocol | undefined;
51
47
  /**
@@ -14,7 +14,7 @@ export type Builder = {
14
14
  */
15
15
  address: string;
16
16
  /**
17
- * Maximum fee rate the end-user authorizes for this builder, in Hyperliquid grammar (e.g. '0.01%'). Must end with '%' and parse to a value in [0, 100].
17
+ * Maximum fee rate the end-user authorizes for this builder, in Hyperliquid grammar (e.g. '0.01%'). Must end with '%', use at most 0.001% precision (one tenth of a basis point) and be at most 0.1%, Hyperliquid's cap on perps builder fees. The fee is charged on top of Hyperliquid's own trading fee.
18
18
  */
19
19
  maxFeeRate: string;
20
20
  };
@@ -42,13 +42,9 @@ export type CollateralPosition = {
42
42
  * chain's Aave V3 deployment); MORPHO on Ethereum, Base, Arbitrum and HyperEVM
43
43
  * (where it is Felix); EULER on Ethereum, Base, Arbitrum and BSC.
44
44
  *
45
- * All three support ``/v2/credit/loop`` and ``/v2/credit/unloop``. EULER does
46
- * NOT: ``/v2/credit/rebalance`` rejects it with a 422, and
47
- * ``/v2/credit/looped_positions`` covers only AAVE and MORPHO — an Euler loop is
48
- * silently absent there rather than an error, so read it from
49
- * ``/v2/credit/positions`` instead. (EULER still appears in the
50
- * ``looped_positions`` response enum because this enum is shared; it is never
51
- * emitted.)
45
+ * All three support ``/v2/credit/loop``, ``/v2/credit/unloop`` and
46
+ * ``/v2/credit/looped_positions``. The one gap is ``/v2/credit/rebalance``,
47
+ * which rejects EULER with a 422.
52
48
  */
53
49
  protocol?: CreditProtocol | undefined;
54
50
  /**
@@ -65,13 +65,9 @@ export type CreditBorrowParams = {
65
65
  * chain's Aave V3 deployment); MORPHO on Ethereum, Base, Arbitrum and HyperEVM
66
66
  * (where it is Felix); EULER on Ethereum, Base, Arbitrum and BSC.
67
67
  *
68
- * All three support ``/v2/credit/loop`` and ``/v2/credit/unloop``. EULER does
69
- * NOT: ``/v2/credit/rebalance`` rejects it with a 422, and
70
- * ``/v2/credit/looped_positions`` covers only AAVE and MORPHO — an Euler loop is
71
- * silently absent there rather than an error, so read it from
72
- * ``/v2/credit/positions`` instead. (EULER still appears in the
73
- * ``looped_positions`` response enum because this enum is shared; it is never
74
- * emitted.)
68
+ * All three support ``/v2/credit/loop``, ``/v2/credit/unloop`` and
69
+ * ``/v2/credit/looped_positions``. The one gap is ``/v2/credit/rebalance``,
70
+ * which rejects EULER with a 422.
75
71
  */
76
72
  protocol?: CreditProtocol | undefined;
77
73
  /**
@@ -78,13 +78,9 @@ export type CreditBorrowRequest = {
78
78
  * chain's Aave V3 deployment); MORPHO on Ethereum, Base, Arbitrum and HyperEVM
79
79
  * (where it is Felix); EULER on Ethereum, Base, Arbitrum and BSC.
80
80
  *
81
- * All three support ``/v2/credit/loop`` and ``/v2/credit/unloop``. EULER does
82
- * NOT: ``/v2/credit/rebalance`` rejects it with a 422, and
83
- * ``/v2/credit/looped_positions`` covers only AAVE and MORPHO — an Euler loop is
84
- * silently absent there rather than an error, so read it from
85
- * ``/v2/credit/positions`` instead. (EULER still appears in the
86
- * ``looped_positions`` response enum because this enum is shared; it is never
87
- * emitted.)
81
+ * All three support ``/v2/credit/loop``, ``/v2/credit/unloop`` and
82
+ * ``/v2/credit/looped_positions``. The one gap is ``/v2/credit/rebalance``,
83
+ * which rejects EULER with a 422.
88
84
  */
89
85
  protocol?: CreditProtocol | undefined;
90
86
  /**
@@ -40,13 +40,9 @@ export type CreditEnableCollateralParams = {
40
40
  * chain's Aave V3 deployment); MORPHO on Ethereum, Base, Arbitrum and HyperEVM
41
41
  * (where it is Felix); EULER on Ethereum, Base, Arbitrum and BSC.
42
42
  *
43
- * All three support ``/v2/credit/loop`` and ``/v2/credit/unloop``. EULER does
44
- * NOT: ``/v2/credit/rebalance`` rejects it with a 422, and
45
- * ``/v2/credit/looped_positions`` covers only AAVE and MORPHO — an Euler loop is
46
- * silently absent there rather than an error, so read it from
47
- * ``/v2/credit/positions`` instead. (EULER still appears in the
48
- * ``looped_positions`` response enum because this enum is shared; it is never
49
- * emitted.)
43
+ * All three support ``/v2/credit/loop``, ``/v2/credit/unloop`` and
44
+ * ``/v2/credit/looped_positions``. The one gap is ``/v2/credit/rebalance``,
45
+ * which rejects EULER with a 422.
50
46
  */
51
47
  protocol?: CreditProtocol | undefined;
52
48
  /**
@@ -17,7 +17,7 @@ import {
17
17
  } from "./loopedposition.js";
18
18
 
19
19
  /**
20
- * Looped positions across Aave V3 and Morpho Blue for a credit account.
20
+ * Looped positions across Aave V3, Morpho Blue and Euler V2 for a credit account.
21
21
  */
22
22
  export type CreditLoopedPositionsResponse = {
23
23
  /**
@@ -25,11 +25,11 @@ export type CreditLoopedPositionsResponse = {
25
25
  */
26
26
  creditAccountAddress: string;
27
27
  /**
28
- * All looped positions, on both Aave and Morpho.
28
+ * Every leveraged position the account holds, across Aave, Morpho and Euler — each with its live state, lifetime totals and full transaction history, whether it is still open or already closed.
29
29
  */
30
30
  positions?: Array<LoopedPosition> | undefined;
31
31
  /**
32
- * Aave account-level summary (health factor, LTV, borrow capacity). Present when the account holds any open Aave looped position, since Aave collateral is pooled and health is account-level. Null for Morpho-only accounts.
32
+ * Aave account-level summary (health factor, LTV, borrow capacity). Present when the account holds any open Aave looped position, since Aave collateral is pooled and health is account-level. Null for accounts with no open Aave loop — Morpho and Euler positions carry their own isolated health factor on each position instead.
33
33
  */
34
34
  aaveAccountSummary?: AccountSummary | null | undefined;
35
35
  };
@@ -94,13 +94,9 @@ export type CreditLoopRequest = {
94
94
  * chain's Aave V3 deployment); MORPHO on Ethereum, Base, Arbitrum and HyperEVM
95
95
  * (where it is Felix); EULER on Ethereum, Base, Arbitrum and BSC.
96
96
  *
97
- * All three support ``/v2/credit/loop`` and ``/v2/credit/unloop``. EULER does
98
- * NOT: ``/v2/credit/rebalance`` rejects it with a 422, and
99
- * ``/v2/credit/looped_positions`` covers only AAVE and MORPHO — an Euler loop is
100
- * silently absent there rather than an error, so read it from
101
- * ``/v2/credit/positions`` instead. (EULER still appears in the
102
- * ``looped_positions`` response enum because this enum is shared; it is never
103
- * emitted.)
97
+ * All three support ``/v2/credit/loop``, ``/v2/credit/unloop`` and
98
+ * ``/v2/credit/looped_positions``. The one gap is ``/v2/credit/rebalance``,
99
+ * which rejects EULER with a 422.
104
100
  */
105
101
  protocol?: CreditProtocol | undefined;
106
102
  /**
@@ -22,14 +22,14 @@ import {
22
22
  } from "./unsignedtransaction.js";
23
23
 
24
24
  /**
25
- * Identifies which route priced the swap leg(s): a DEX AGGREGATOR (iterative loop across pool liquidity, slippage-bounded floors) or a FIRM provider (zero-slippage quotes, one per swap leg, each partially filled at the leg's size exact fills, zero dust). On preview=true responses a firm value means the numbers are INDICATIVE, computed from live maker price levels without spending any quote; execution fetches the firm quotes at signing time. Always present, including on fallbacks. This is the authoritative firm-vs-market signal and clients do need to read it: `pricing` is only what was REQUESTED (under 'auto' a firm build can fall back to market transparently), and `quote_expires_at` is absent on every preview — so neither substitutes for this field.
25
+ * Identifies which route priced the swap leg(s): 'market' — a DEX aggregator (iterative loop across pool liquidity, slippage-bounded floors) or 'firm' zero-slippage quotes, one per swap leg, each partially filled at the leg's size (exact fills, zero dust). On preview=true responses 'firm' means the numbers are INDICATIVE, computed from live maker price levels without spending any quote; execution fetches the firm quotes at signing time. Always present, including on fallbacks. This is the authoritative firm-vs-market signal and clients do need to read it: `pricing` is only what was REQUESTED (under 'auto' a firm build can fall back to market transparently), and `quote_expires_at` is absent on every preview — so neither substitutes for this field.
26
26
  */
27
27
  export const CreditLoopResponseSwapProvider = {
28
- OneInch: "one_inch",
29
- Bebop: "bebop",
28
+ Market: "market",
29
+ Firm: "firm",
30
30
  } as const;
31
31
  /**
32
- * Identifies which route priced the swap leg(s): a DEX AGGREGATOR (iterative loop across pool liquidity, slippage-bounded floors) or a FIRM provider (zero-slippage quotes, one per swap leg, each partially filled at the leg's size exact fills, zero dust). On preview=true responses a firm value means the numbers are INDICATIVE, computed from live maker price levels without spending any quote; execution fetches the firm quotes at signing time. Always present, including on fallbacks. This is the authoritative firm-vs-market signal and clients do need to read it: `pricing` is only what was REQUESTED (under 'auto' a firm build can fall back to market transparently), and `quote_expires_at` is absent on every preview — so neither substitutes for this field.
32
+ * Identifies which route priced the swap leg(s): 'market' — a DEX aggregator (iterative loop across pool liquidity, slippage-bounded floors) or 'firm' zero-slippage quotes, one per swap leg, each partially filled at the leg's size (exact fills, zero dust). On preview=true responses 'firm' means the numbers are INDICATIVE, computed from live maker price levels without spending any quote; execution fetches the firm quotes at signing time. Always present, including on fallbacks. This is the authoritative firm-vs-market signal and clients do need to read it: `pricing` is only what was REQUESTED (under 'auto' a firm build can fall back to market transparently), and `quote_expires_at` is absent on every preview — so neither substitutes for this field.
33
33
  */
34
34
  export type CreditLoopResponseSwapProvider = ClosedEnum<
35
35
  typeof CreditLoopResponseSwapProvider
@@ -52,7 +52,7 @@ export type CreditLoopResponse = {
52
52
  */
53
53
  preview: CreditLoopPreview | null;
54
54
  /**
55
- * Identifies which route priced the swap leg(s): a DEX AGGREGATOR (iterative loop across pool liquidity, slippage-bounded floors) or a FIRM provider (zero-slippage quotes, one per swap leg, each partially filled at the leg's size exact fills, zero dust). On preview=true responses a firm value means the numbers are INDICATIVE, computed from live maker price levels without spending any quote; execution fetches the firm quotes at signing time. Always present, including on fallbacks. This is the authoritative firm-vs-market signal and clients do need to read it: `pricing` is only what was REQUESTED (under 'auto' a firm build can fall back to market transparently), and `quote_expires_at` is absent on every preview — so neither substitutes for this field.
55
+ * Identifies which route priced the swap leg(s): 'market' — a DEX aggregator (iterative loop across pool liquidity, slippage-bounded floors) or 'firm' zero-slippage quotes, one per swap leg, each partially filled at the leg's size (exact fills, zero dust). On preview=true responses 'firm' means the numbers are INDICATIVE, computed from live maker price levels without spending any quote; execution fetches the firm quotes at signing time. Always present, including on fallbacks. This is the authoritative firm-vs-market signal and clients do need to read it: `pricing` is only what was REQUESTED (under 'auto' a firm build can fall back to market transparently), and `quote_expires_at` is absent on every preview — so neither substitutes for this field.
56
56
  */
57
57
  swapProvider?: CreditLoopResponseSwapProvider | undefined;
58
58
  /**
@@ -22,13 +22,9 @@ import { ClosedEnum } from "../../types/enums.js";
22
22
  * chain's Aave V3 deployment); MORPHO on Ethereum, Base, Arbitrum and HyperEVM
23
23
  * (where it is Felix); EULER on Ethereum, Base, Arbitrum and BSC.
24
24
  *
25
- * All three support ``/v2/credit/loop`` and ``/v2/credit/unloop``. EULER does
26
- * NOT: ``/v2/credit/rebalance`` rejects it with a 422, and
27
- * ``/v2/credit/looped_positions`` covers only AAVE and MORPHO — an Euler loop is
28
- * silently absent there rather than an error, so read it from
29
- * ``/v2/credit/positions`` instead. (EULER still appears in the
30
- * ``looped_positions`` response enum because this enum is shared; it is never
31
- * emitted.)
25
+ * All three support ``/v2/credit/loop``, ``/v2/credit/unloop`` and
26
+ * ``/v2/credit/looped_positions``. The one gap is ``/v2/credit/rebalance``,
27
+ * which rejects EULER with a 422.
32
28
  */
33
29
  export const CreditProtocol = {
34
30
  Aave: "AAVE",
@@ -52,13 +48,9 @@ export const CreditProtocol = {
52
48
  * chain's Aave V3 deployment); MORPHO on Ethereum, Base, Arbitrum and HyperEVM
53
49
  * (where it is Felix); EULER on Ethereum, Base, Arbitrum and BSC.
54
50
  *
55
- * All three support ``/v2/credit/loop`` and ``/v2/credit/unloop``. EULER does
56
- * NOT: ``/v2/credit/rebalance`` rejects it with a 422, and
57
- * ``/v2/credit/looped_positions`` covers only AAVE and MORPHO — an Euler loop is
58
- * silently absent there rather than an error, so read it from
59
- * ``/v2/credit/positions`` instead. (EULER still appears in the
60
- * ``looped_positions`` response enum because this enum is shared; it is never
61
- * emitted.)
51
+ * All three support ``/v2/credit/loop``, ``/v2/credit/unloop`` and
52
+ * ``/v2/credit/looped_positions``. The one gap is ``/v2/credit/rebalance``,
53
+ * which rejects EULER with a 422.
62
54
  */
63
55
  export type CreditProtocol = ClosedEnum<typeof CreditProtocol>;
64
56
 
@@ -56,13 +56,9 @@ export type CreditRepayParams = {
56
56
  * chain's Aave V3 deployment); MORPHO on Ethereum, Base, Arbitrum and HyperEVM
57
57
  * (where it is Felix); EULER on Ethereum, Base, Arbitrum and BSC.
58
58
  *
59
- * All three support ``/v2/credit/loop`` and ``/v2/credit/unloop``. EULER does
60
- * NOT: ``/v2/credit/rebalance`` rejects it with a 422, and
61
- * ``/v2/credit/looped_positions`` covers only AAVE and MORPHO — an Euler loop is
62
- * silently absent there rather than an error, so read it from
63
- * ``/v2/credit/positions`` instead. (EULER still appears in the
64
- * ``looped_positions`` response enum because this enum is shared; it is never
65
- * emitted.)
59
+ * All three support ``/v2/credit/loop``, ``/v2/credit/unloop`` and
60
+ * ``/v2/credit/looped_positions``. The one gap is ``/v2/credit/rebalance``,
61
+ * which rejects EULER with a 422.
66
62
  */
67
63
  protocol?: CreditProtocol | undefined;
68
64
  /**
@@ -73,13 +73,9 @@ export type CreditRepayRequest = {
73
73
  * chain's Aave V3 deployment); MORPHO on Ethereum, Base, Arbitrum and HyperEVM
74
74
  * (where it is Felix); EULER on Ethereum, Base, Arbitrum and BSC.
75
75
  *
76
- * All three support ``/v2/credit/loop`` and ``/v2/credit/unloop``. EULER does
77
- * NOT: ``/v2/credit/rebalance`` rejects it with a 422, and
78
- * ``/v2/credit/looped_positions`` covers only AAVE and MORPHO — an Euler loop is
79
- * silently absent there rather than an error, so read it from
80
- * ``/v2/credit/positions`` instead. (EULER still appears in the
81
- * ``looped_positions`` response enum because this enum is shared; it is never
82
- * emitted.)
76
+ * All three support ``/v2/credit/loop``, ``/v2/credit/unloop`` and
77
+ * ``/v2/credit/looped_positions``. The one gap is ``/v2/credit/rebalance``,
78
+ * which rejects EULER with a 422.
83
79
  */
84
80
  protocol?: CreditProtocol | undefined;
85
81
  /**
@@ -44,13 +44,9 @@ export type CreditSupplyParams = {
44
44
  * chain's Aave V3 deployment); MORPHO on Ethereum, Base, Arbitrum and HyperEVM
45
45
  * (where it is Felix); EULER on Ethereum, Base, Arbitrum and BSC.
46
46
  *
47
- * All three support ``/v2/credit/loop`` and ``/v2/credit/unloop``. EULER does
48
- * NOT: ``/v2/credit/rebalance`` rejects it with a 422, and
49
- * ``/v2/credit/looped_positions`` covers only AAVE and MORPHO — an Euler loop is
50
- * silently absent there rather than an error, so read it from
51
- * ``/v2/credit/positions`` instead. (EULER still appears in the
52
- * ``looped_positions`` response enum because this enum is shared; it is never
53
- * emitted.)
47
+ * All three support ``/v2/credit/loop``, ``/v2/credit/unloop`` and
48
+ * ``/v2/credit/looped_positions``. The one gap is ``/v2/credit/rebalance``,
49
+ * which rejects EULER with a 422.
54
50
  */
55
51
  protocol?: CreditProtocol | undefined;
56
52
  /**
@@ -86,13 +86,9 @@ export type CreditUnloopRequest = {
86
86
  * chain's Aave V3 deployment); MORPHO on Ethereum, Base, Arbitrum and HyperEVM
87
87
  * (where it is Felix); EULER on Ethereum, Base, Arbitrum and BSC.
88
88
  *
89
- * All three support ``/v2/credit/loop`` and ``/v2/credit/unloop``. EULER does
90
- * NOT: ``/v2/credit/rebalance`` rejects it with a 422, and
91
- * ``/v2/credit/looped_positions`` covers only AAVE and MORPHO — an Euler loop is
92
- * silently absent there rather than an error, so read it from
93
- * ``/v2/credit/positions`` instead. (EULER still appears in the
94
- * ``looped_positions`` response enum because this enum is shared; it is never
95
- * emitted.)
89
+ * All three support ``/v2/credit/loop``, ``/v2/credit/unloop`` and
90
+ * ``/v2/credit/looped_positions``. The one gap is ``/v2/credit/rebalance``,
91
+ * which rejects EULER with a 422.
96
92
  */
97
93
  protocol?: CreditProtocol | undefined;
98
94
  /**
@@ -22,14 +22,14 @@ import {
22
22
  } from "./unsignedtransaction.js";
23
23
 
24
24
  /**
25
- * Identifies which route priced the swap leg(s): a DEX AGGREGATOR (pool liquidity, slippage-bounded floors) or a FIRM provider (quotes, one per swap leg, each partially filled at the leg's size). On preview=true responses a firm value means the numbers are INDICATIVE, computed from live maker price levels without spending any quote; execution fetches the firm quotes at signing time. Always present, including on fallbacks. This is the authoritative firm-vs-market signal and clients do need to read it: `pricing` is only what was REQUESTED (under 'auto' a firm build can fall back to market transparently), and `quote_expires_at` is absent on every preview — so neither substitutes for this field.
25
+ * Identifies which route priced the swap leg(s): 'market' — a DEX aggregator (pool liquidity, slippage-bounded floors) or 'firm' quotes, one per swap leg, each partially filled at the leg's size. On preview=true responses 'firm' means the numbers are INDICATIVE, computed from live maker price levels without spending any quote; execution fetches the firm quotes at signing time. Always present, including on fallbacks. This is the authoritative firm-vs-market signal and clients do need to read it: `pricing` is only what was REQUESTED (under 'auto' a firm build can fall back to market transparently), and `quote_expires_at` is absent on every preview — so neither substitutes for this field.
26
26
  */
27
27
  export const CreditUnloopResponseSwapProvider = {
28
- OneInch: "one_inch",
29
- Bebop: "bebop",
28
+ Market: "market",
29
+ Firm: "firm",
30
30
  } as const;
31
31
  /**
32
- * Identifies which route priced the swap leg(s): a DEX AGGREGATOR (pool liquidity, slippage-bounded floors) or a FIRM provider (quotes, one per swap leg, each partially filled at the leg's size). On preview=true responses a firm value means the numbers are INDICATIVE, computed from live maker price levels without spending any quote; execution fetches the firm quotes at signing time. Always present, including on fallbacks. This is the authoritative firm-vs-market signal and clients do need to read it: `pricing` is only what was REQUESTED (under 'auto' a firm build can fall back to market transparently), and `quote_expires_at` is absent on every preview — so neither substitutes for this field.
32
+ * Identifies which route priced the swap leg(s): 'market' — a DEX aggregator (pool liquidity, slippage-bounded floors) or 'firm' quotes, one per swap leg, each partially filled at the leg's size. On preview=true responses 'firm' means the numbers are INDICATIVE, computed from live maker price levels without spending any quote; execution fetches the firm quotes at signing time. Always present, including on fallbacks. This is the authoritative firm-vs-market signal and clients do need to read it: `pricing` is only what was REQUESTED (under 'auto' a firm build can fall back to market transparently), and `quote_expires_at` is absent on every preview — so neither substitutes for this field.
33
33
  */
34
34
  export type CreditUnloopResponseSwapProvider = ClosedEnum<
35
35
  typeof CreditUnloopResponseSwapProvider
@@ -52,7 +52,7 @@ export type CreditUnloopResponse = {
52
52
  */
53
53
  preview: CreditUnloopPreview | null;
54
54
  /**
55
- * Identifies which route priced the swap leg(s): a DEX AGGREGATOR (pool liquidity, slippage-bounded floors) or a FIRM provider (quotes, one per swap leg, each partially filled at the leg's size). On preview=true responses a firm value means the numbers are INDICATIVE, computed from live maker price levels without spending any quote; execution fetches the firm quotes at signing time. Always present, including on fallbacks. This is the authoritative firm-vs-market signal and clients do need to read it: `pricing` is only what was REQUESTED (under 'auto' a firm build can fall back to market transparently), and `quote_expires_at` is absent on every preview — so neither substitutes for this field.
55
+ * Identifies which route priced the swap leg(s): 'market' — a DEX aggregator (pool liquidity, slippage-bounded floors) or 'firm' quotes, one per swap leg, each partially filled at the leg's size. On preview=true responses 'firm' means the numbers are INDICATIVE, computed from live maker price levels without spending any quote; execution fetches the firm quotes at signing time. Always present, including on fallbacks. This is the authoritative firm-vs-market signal and clients do need to read it: `pricing` is only what was REQUESTED (under 'auto' a firm build can fall back to market transparently), and `quote_expires_at` is absent on every preview — so neither substitutes for this field.
56
56
  */
57
57
  swapProvider?: CreditUnloopResponseSwapProvider | undefined;
58
58
  /**
@@ -44,13 +44,9 @@ export type CreditWithdrawParams = {
44
44
  * chain's Aave V3 deployment); MORPHO on Ethereum, Base, Arbitrum and HyperEVM
45
45
  * (where it is Felix); EULER on Ethereum, Base, Arbitrum and BSC.
46
46
  *
47
- * All three support ``/v2/credit/loop`` and ``/v2/credit/unloop``. EULER does
48
- * NOT: ``/v2/credit/rebalance`` rejects it with a 422, and
49
- * ``/v2/credit/looped_positions`` covers only AAVE and MORPHO — an Euler loop is
50
- * silently absent there rather than an error, so read it from
51
- * ``/v2/credit/positions`` instead. (EULER still appears in the
52
- * ``looped_positions`` response enum because this enum is shared; it is never
53
- * emitted.)
47
+ * All three support ``/v2/credit/loop``, ``/v2/credit/unloop`` and
48
+ * ``/v2/credit/looped_positions``. The one gap is ``/v2/credit/rebalance``,
49
+ * which rejects EULER with a 422.
54
50
  */
55
51
  protocol?: CreditProtocol | undefined;
56
52
  /**
@@ -42,13 +42,9 @@ export type DebtPosition = {
42
42
  * chain's Aave V3 deployment); MORPHO on Ethereum, Base, Arbitrum and HyperEVM
43
43
  * (where it is Felix); EULER on Ethereum, Base, Arbitrum and BSC.
44
44
  *
45
- * All three support ``/v2/credit/loop`` and ``/v2/credit/unloop``. EULER does
46
- * NOT: ``/v2/credit/rebalance`` rejects it with a 422, and
47
- * ``/v2/credit/looped_positions`` covers only AAVE and MORPHO — an Euler loop is
48
- * silently absent there rather than an error, so read it from
49
- * ``/v2/credit/positions`` instead. (EULER still appears in the
50
- * ``looped_positions`` response enum because this enum is shared; it is never
51
- * emitted.)
45
+ * All three support ``/v2/credit/loop``, ``/v2/credit/unloop`` and
46
+ * ``/v2/credit/looped_positions``. The one gap is ``/v2/credit/rebalance``,
47
+ * which rejects EULER with a 422.
52
48
  */
53
49
  protocol?: CreditProtocol | undefined;
54
50
  /**