zklighter-perps 1.0.152 → 1.0.154
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/.openapi-generator/FILES +1 -2
- package/apis/ReferralApi.ts +5 -46
- package/models/PublicPoolInfo.ts +14 -26
- package/models/SharePrice.ts +70 -0
- package/models/index.ts +1 -2
- package/openapi.json +31 -88
- package/package.json +1 -1
package/.openapi-generator/FILES
CHANGED
|
@@ -50,7 +50,6 @@ models/Funding.ts
|
|
|
50
50
|
models/FundingRate.ts
|
|
51
51
|
models/FundingRates.ts
|
|
52
52
|
models/Fundings.ts
|
|
53
|
-
models/HasRefereeCode.ts
|
|
54
53
|
models/IsWhitelisted.ts
|
|
55
54
|
models/L1Metadata.ts
|
|
56
55
|
models/L1ProviderInfo.ts
|
|
@@ -124,7 +123,6 @@ models/ReqGetTransferFeeInfo.ts
|
|
|
124
123
|
models/ReqGetTransferHistory.ts
|
|
125
124
|
models/ReqGetTx.ts
|
|
126
125
|
models/ReqGetWithdrawHistory.ts
|
|
127
|
-
models/ReqHasRefereeByL1Address.ts
|
|
128
126
|
models/ReqIsWhitelisted.ts
|
|
129
127
|
models/RespChangeAccountTier.ts
|
|
130
128
|
models/RespGetFastBridgeInfo.ts
|
|
@@ -135,6 +133,7 @@ models/RespWithdrawalDelay.ts
|
|
|
135
133
|
models/ResultCode.ts
|
|
136
134
|
models/RiskInfo.ts
|
|
137
135
|
models/RiskParameters.ts
|
|
136
|
+
models/SharePrice.ts
|
|
138
137
|
models/SimpleOrder.ts
|
|
139
138
|
models/Status.ts
|
|
140
139
|
models/SubAccounts.ts
|
package/apis/ReferralApi.ts
CHANGED
|
@@ -15,14 +15,11 @@
|
|
|
15
15
|
|
|
16
16
|
import * as runtime from '../runtime';
|
|
17
17
|
import type {
|
|
18
|
-
HasRefereeCode,
|
|
19
18
|
ReferralCode,
|
|
20
19
|
ReferralPoints,
|
|
21
20
|
ResultCode,
|
|
22
21
|
} from '../models/index';
|
|
23
22
|
import {
|
|
24
|
-
HasRefereeCodeFromJSON,
|
|
25
|
-
HasRefereeCodeToJSON,
|
|
26
23
|
ReferralCodeFromJSON,
|
|
27
24
|
ReferralCodeToJSON,
|
|
28
25
|
ReferralPointsFromJSON,
|
|
@@ -43,10 +40,6 @@ export interface ReferralGetRequest {
|
|
|
43
40
|
auth?: string;
|
|
44
41
|
}
|
|
45
42
|
|
|
46
|
-
export interface ReferralHasRefereeByAddressRequest {
|
|
47
|
-
l1_address: string;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
43
|
export interface ReferralPointsRequest {
|
|
51
44
|
account_index: number;
|
|
52
45
|
authorization?: string;
|
|
@@ -59,6 +52,7 @@ export interface ReferralUseRequest {
|
|
|
59
52
|
x: string;
|
|
60
53
|
discord?: string;
|
|
61
54
|
telegram?: string;
|
|
55
|
+
signature?: string;
|
|
62
56
|
}
|
|
63
57
|
|
|
64
58
|
/**
|
|
@@ -175,45 +169,6 @@ export class ReferralApi extends runtime.BaseAPI {
|
|
|
175
169
|
return await response.value();
|
|
176
170
|
}
|
|
177
171
|
|
|
178
|
-
/**
|
|
179
|
-
* Does L1 address have referee code?
|
|
180
|
-
* referral_hasRefereeByAddress
|
|
181
|
-
*/
|
|
182
|
-
async referralHasRefereeByAddressRaw(requestParameters: ReferralHasRefereeByAddressRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<HasRefereeCode>> {
|
|
183
|
-
if (requestParameters['l1_address'] == null) {
|
|
184
|
-
throw new runtime.RequiredError(
|
|
185
|
-
'l1_address',
|
|
186
|
-
'Required parameter "l1_address" was null or undefined when calling referralHasRefereeByAddress().'
|
|
187
|
-
);
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
const queryParameters: any = {};
|
|
191
|
-
|
|
192
|
-
if (requestParameters['l1_address'] != null) {
|
|
193
|
-
queryParameters['l1_address'] = requestParameters['l1_address'];
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
const headerParameters: runtime.HTTPHeaders = {};
|
|
197
|
-
|
|
198
|
-
const response = await this.request({
|
|
199
|
-
path: `/api/v1/referral/hasRefereeByAddress`,
|
|
200
|
-
method: 'GET',
|
|
201
|
-
headers: headerParameters,
|
|
202
|
-
query: queryParameters,
|
|
203
|
-
}, initOverrides);
|
|
204
|
-
|
|
205
|
-
return new runtime.JSONApiResponse(response, (jsonValue) => HasRefereeCodeFromJSON(jsonValue));
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
/**
|
|
209
|
-
* Does L1 address have referee code?
|
|
210
|
-
* referral_hasRefereeByAddress
|
|
211
|
-
*/
|
|
212
|
-
async referralHasRefereeByAddress(requestParameters: ReferralHasRefereeByAddressRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<HasRefereeCode> {
|
|
213
|
-
const response = await this.referralHasRefereeByAddressRaw(requestParameters, initOverrides);
|
|
214
|
-
return await response.value();
|
|
215
|
-
}
|
|
216
|
-
|
|
217
172
|
/**
|
|
218
173
|
* Get referral points
|
|
219
174
|
* referral_points
|
|
@@ -325,6 +280,10 @@ export class ReferralApi extends runtime.BaseAPI {
|
|
|
325
280
|
formParams.append('x', requestParameters['x'] as any);
|
|
326
281
|
}
|
|
327
282
|
|
|
283
|
+
if (requestParameters['signature'] != null) {
|
|
284
|
+
formParams.append('signature', requestParameters['signature'] as any);
|
|
285
|
+
}
|
|
286
|
+
|
|
328
287
|
const response = await this.request({
|
|
329
288
|
path: `/api/v1/referral/use`,
|
|
330
289
|
method: 'POST',
|
package/models/PublicPoolInfo.ts
CHANGED
|
@@ -19,6 +19,12 @@ import {
|
|
|
19
19
|
DailyReturnFromJSONTyped,
|
|
20
20
|
DailyReturnToJSON,
|
|
21
21
|
} from './DailyReturn';
|
|
22
|
+
import type { SharePrice } from './SharePrice';
|
|
23
|
+
import {
|
|
24
|
+
SharePriceFromJSON,
|
|
25
|
+
SharePriceFromJSONTyped,
|
|
26
|
+
SharePriceToJSON,
|
|
27
|
+
} from './SharePrice';
|
|
22
28
|
|
|
23
29
|
/**
|
|
24
30
|
*
|
|
@@ -61,31 +67,19 @@ export interface PublicPoolInfo {
|
|
|
61
67
|
* @type {number}
|
|
62
68
|
* @memberof PublicPoolInfo
|
|
63
69
|
*/
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
*
|
|
67
|
-
* @type {number}
|
|
68
|
-
* @memberof PublicPoolInfo
|
|
69
|
-
*/
|
|
70
|
-
share_price_7d: number;
|
|
71
|
-
/**
|
|
72
|
-
*
|
|
73
|
-
* @type {number}
|
|
74
|
-
* @memberof PublicPoolInfo
|
|
75
|
-
*/
|
|
76
|
-
share_price_30d: number;
|
|
70
|
+
annual_percentage_yield: number;
|
|
77
71
|
/**
|
|
78
72
|
*
|
|
79
|
-
* @type {
|
|
73
|
+
* @type {Array<DailyReturn>}
|
|
80
74
|
* @memberof PublicPoolInfo
|
|
81
75
|
*/
|
|
82
|
-
|
|
76
|
+
daily_returns: Array<DailyReturn>;
|
|
83
77
|
/**
|
|
84
78
|
*
|
|
85
|
-
* @type {Array<
|
|
79
|
+
* @type {Array<SharePrice>}
|
|
86
80
|
* @memberof PublicPoolInfo
|
|
87
81
|
*/
|
|
88
|
-
|
|
82
|
+
share_prices: Array<SharePrice>;
|
|
89
83
|
}
|
|
90
84
|
|
|
91
85
|
/**
|
|
@@ -97,11 +91,9 @@ export function instanceOfPublicPoolInfo(value: object): value is PublicPoolInfo
|
|
|
97
91
|
if (!('min_operator_share_rate' in value) || value['min_operator_share_rate'] === undefined) return false;
|
|
98
92
|
if (!('total_shares' in value) || value['total_shares'] === undefined) return false;
|
|
99
93
|
if (!('operator_shares' in value) || value['operator_shares'] === undefined) return false;
|
|
100
|
-
if (!('share_price_1d' in value) || value['share_price_1d'] === undefined) return false;
|
|
101
|
-
if (!('share_price_7d' in value) || value['share_price_7d'] === undefined) return false;
|
|
102
|
-
if (!('share_price_30d' in value) || value['share_price_30d'] === undefined) return false;
|
|
103
94
|
if (!('annual_percentage_yield' in value) || value['annual_percentage_yield'] === undefined) return false;
|
|
104
95
|
if (!('daily_returns' in value) || value['daily_returns'] === undefined) return false;
|
|
96
|
+
if (!('share_prices' in value) || value['share_prices'] === undefined) return false;
|
|
105
97
|
return true;
|
|
106
98
|
}
|
|
107
99
|
|
|
@@ -120,11 +112,9 @@ export function PublicPoolInfoFromJSONTyped(json: any, ignoreDiscriminator: bool
|
|
|
120
112
|
'min_operator_share_rate': json['min_operator_share_rate'],
|
|
121
113
|
'total_shares': json['total_shares'],
|
|
122
114
|
'operator_shares': json['operator_shares'],
|
|
123
|
-
'share_price_1d': json['share_price_1d'],
|
|
124
|
-
'share_price_7d': json['share_price_7d'],
|
|
125
|
-
'share_price_30d': json['share_price_30d'],
|
|
126
115
|
'annual_percentage_yield': json['annual_percentage_yield'],
|
|
127
116
|
'daily_returns': ((json['daily_returns'] as Array<any>).map(DailyReturnFromJSON)),
|
|
117
|
+
'share_prices': ((json['share_prices'] as Array<any>).map(SharePriceFromJSON)),
|
|
128
118
|
};
|
|
129
119
|
}
|
|
130
120
|
|
|
@@ -139,11 +129,9 @@ export function PublicPoolInfoToJSON(value?: PublicPoolInfo | null): any {
|
|
|
139
129
|
'min_operator_share_rate': value['min_operator_share_rate'],
|
|
140
130
|
'total_shares': value['total_shares'],
|
|
141
131
|
'operator_shares': value['operator_shares'],
|
|
142
|
-
'share_price_1d': value['share_price_1d'],
|
|
143
|
-
'share_price_7d': value['share_price_7d'],
|
|
144
|
-
'share_price_30d': value['share_price_30d'],
|
|
145
132
|
'annual_percentage_yield': value['annual_percentage_yield'],
|
|
146
133
|
'daily_returns': ((value['daily_returns'] as Array<any>).map(DailyReturnToJSON)),
|
|
134
|
+
'share_prices': ((value['share_prices'] as Array<any>).map(SharePriceToJSON)),
|
|
147
135
|
};
|
|
148
136
|
}
|
|
149
137
|
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/* tslint:disable */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
6
|
+
*
|
|
7
|
+
* The version of the OpenAPI document:
|
|
8
|
+
*
|
|
9
|
+
*
|
|
10
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
11
|
+
* https://openapi-generator.tech
|
|
12
|
+
* Do not edit the class manually.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { mapValues } from '../runtime';
|
|
16
|
+
/**
|
|
17
|
+
*
|
|
18
|
+
* @export
|
|
19
|
+
* @interface SharePrice
|
|
20
|
+
*/
|
|
21
|
+
export interface SharePrice {
|
|
22
|
+
/**
|
|
23
|
+
*
|
|
24
|
+
* @type {number}
|
|
25
|
+
* @memberof SharePrice
|
|
26
|
+
*/
|
|
27
|
+
timestamp: number;
|
|
28
|
+
/**
|
|
29
|
+
*
|
|
30
|
+
* @type {number}
|
|
31
|
+
* @memberof SharePrice
|
|
32
|
+
*/
|
|
33
|
+
share_price: number;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Check if a given object implements the SharePrice interface.
|
|
38
|
+
*/
|
|
39
|
+
export function instanceOfSharePrice(value: object): value is SharePrice {
|
|
40
|
+
if (!('timestamp' in value) || value['timestamp'] === undefined) return false;
|
|
41
|
+
if (!('share_price' in value) || value['share_price'] === undefined) return false;
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export function SharePriceFromJSON(json: any): SharePrice {
|
|
46
|
+
return SharePriceFromJSONTyped(json, false);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function SharePriceFromJSONTyped(json: any, ignoreDiscriminator: boolean): SharePrice {
|
|
50
|
+
if (json == null) {
|
|
51
|
+
return json;
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
|
|
55
|
+
'timestamp': json['timestamp'],
|
|
56
|
+
'share_price': json['share_price'],
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export function SharePriceToJSON(value?: SharePrice | null): any {
|
|
61
|
+
if (value == null) {
|
|
62
|
+
return value;
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
|
|
66
|
+
'timestamp': value['timestamp'],
|
|
67
|
+
'share_price': value['share_price'],
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
package/models/index.ts
CHANGED
|
@@ -38,7 +38,6 @@ export * from './Funding';
|
|
|
38
38
|
export * from './FundingRate';
|
|
39
39
|
export * from './FundingRates';
|
|
40
40
|
export * from './Fundings';
|
|
41
|
-
export * from './HasRefereeCode';
|
|
42
41
|
export * from './IsWhitelisted';
|
|
43
42
|
export * from './L1Metadata';
|
|
44
43
|
export * from './L1ProviderInfo';
|
|
@@ -112,7 +111,6 @@ export * from './ReqGetTransferFeeInfo';
|
|
|
112
111
|
export * from './ReqGetTransferHistory';
|
|
113
112
|
export * from './ReqGetTx';
|
|
114
113
|
export * from './ReqGetWithdrawHistory';
|
|
115
|
-
export * from './ReqHasRefereeByL1Address';
|
|
116
114
|
export * from './ReqIsWhitelisted';
|
|
117
115
|
export * from './RespChangeAccountTier';
|
|
118
116
|
export * from './RespGetFastBridgeInfo';
|
|
@@ -123,6 +121,7 @@ export * from './RespWithdrawalDelay';
|
|
|
123
121
|
export * from './ResultCode';
|
|
124
122
|
export * from './RiskInfo';
|
|
125
123
|
export * from './RiskParameters';
|
|
124
|
+
export * from './SharePrice';
|
|
126
125
|
export * from './SimpleOrder';
|
|
127
126
|
export * from './Status';
|
|
128
127
|
export * from './SubAccounts';
|
package/openapi.json
CHANGED
|
@@ -2313,41 +2313,6 @@
|
|
|
2313
2313
|
"description": "Get referral code"
|
|
2314
2314
|
}
|
|
2315
2315
|
},
|
|
2316
|
-
"/api/v1/referral/hasRefereeByAddress": {
|
|
2317
|
-
"get": {
|
|
2318
|
-
"summary": "referral_hasRefereeByAddress",
|
|
2319
|
-
"operationId": "referral_hasRefereeByAddress",
|
|
2320
|
-
"responses": {
|
|
2321
|
-
"200": {
|
|
2322
|
-
"description": "A successful response.",
|
|
2323
|
-
"schema": {
|
|
2324
|
-
"$ref": "#/definitions/HasRefereeCode"
|
|
2325
|
-
}
|
|
2326
|
-
},
|
|
2327
|
-
"400": {
|
|
2328
|
-
"description": "Bad request",
|
|
2329
|
-
"schema": {
|
|
2330
|
-
"$ref": "#/definitions/ResultCode"
|
|
2331
|
-
}
|
|
2332
|
-
}
|
|
2333
|
-
},
|
|
2334
|
-
"parameters": [
|
|
2335
|
-
{
|
|
2336
|
-
"name": "l1_address",
|
|
2337
|
-
"in": "query",
|
|
2338
|
-
"required": true,
|
|
2339
|
-
"type": "string"
|
|
2340
|
-
}
|
|
2341
|
-
],
|
|
2342
|
-
"tags": [
|
|
2343
|
-
"referral"
|
|
2344
|
-
],
|
|
2345
|
-
"consumes": [
|
|
2346
|
-
"multipart/form-data"
|
|
2347
|
-
],
|
|
2348
|
-
"description": "Does L1 address have referee code?"
|
|
2349
|
-
}
|
|
2350
|
-
},
|
|
2351
2316
|
"/api/v1/referral/points": {
|
|
2352
2317
|
"get": {
|
|
2353
2318
|
"summary": "referral_points",
|
|
@@ -4604,28 +4569,6 @@
|
|
|
4604
4569
|
"fundings"
|
|
4605
4570
|
]
|
|
4606
4571
|
},
|
|
4607
|
-
"HasRefereeCode": {
|
|
4608
|
-
"type": "object",
|
|
4609
|
-
"properties": {
|
|
4610
|
-
"code": {
|
|
4611
|
-
"type": "integer",
|
|
4612
|
-
"format": "int32",
|
|
4613
|
-
"example": "200"
|
|
4614
|
-
},
|
|
4615
|
-
"message": {
|
|
4616
|
-
"type": "string"
|
|
4617
|
-
},
|
|
4618
|
-
"has_referee": {
|
|
4619
|
-
"type": "boolean",
|
|
4620
|
-
"format": "boolean"
|
|
4621
|
-
}
|
|
4622
|
-
},
|
|
4623
|
-
"title": "HasRefereeCode",
|
|
4624
|
-
"required": [
|
|
4625
|
-
"code",
|
|
4626
|
-
"has_referee"
|
|
4627
|
-
]
|
|
4628
|
-
},
|
|
4629
4572
|
"IsWhitelisted": {
|
|
4630
4573
|
"type": "object",
|
|
4631
4574
|
"properties": {
|
|
@@ -5986,21 +5929,6 @@
|
|
|
5986
5929
|
"format": "int64",
|
|
5987
5930
|
"example": "20000"
|
|
5988
5931
|
},
|
|
5989
|
-
"share_price_1d": {
|
|
5990
|
-
"type": "number",
|
|
5991
|
-
"format": "double",
|
|
5992
|
-
"example": "0.0001"
|
|
5993
|
-
},
|
|
5994
|
-
"share_price_7d": {
|
|
5995
|
-
"type": "number",
|
|
5996
|
-
"format": "double",
|
|
5997
|
-
"example": "0.0001"
|
|
5998
|
-
},
|
|
5999
|
-
"share_price_30d": {
|
|
6000
|
-
"type": "number",
|
|
6001
|
-
"format": "double",
|
|
6002
|
-
"example": "0.0001"
|
|
6003
|
-
},
|
|
6004
5932
|
"annual_percentage_yield": {
|
|
6005
5933
|
"type": "number",
|
|
6006
5934
|
"format": "double",
|
|
@@ -6011,6 +5939,12 @@
|
|
|
6011
5939
|
"items": {
|
|
6012
5940
|
"$ref": "#/definitions/DailyReturn"
|
|
6013
5941
|
}
|
|
5942
|
+
},
|
|
5943
|
+
"share_prices": {
|
|
5944
|
+
"type": "array",
|
|
5945
|
+
"items": {
|
|
5946
|
+
"$ref": "#/definitions/SharePrice"
|
|
5947
|
+
}
|
|
6014
5948
|
}
|
|
6015
5949
|
},
|
|
6016
5950
|
"title": "PublicPoolInfo",
|
|
@@ -6020,11 +5954,9 @@
|
|
|
6020
5954
|
"min_operator_share_rate",
|
|
6021
5955
|
"total_shares",
|
|
6022
5956
|
"operator_shares",
|
|
6023
|
-
"share_price_1d",
|
|
6024
|
-
"share_price_7d",
|
|
6025
|
-
"share_price_30d",
|
|
6026
5957
|
"annual_percentage_yield",
|
|
6027
|
-
"daily_returns"
|
|
5958
|
+
"daily_returns",
|
|
5959
|
+
"share_prices"
|
|
6028
5960
|
]
|
|
6029
5961
|
},
|
|
6030
5962
|
"PublicPoolShare": {
|
|
@@ -7316,18 +7248,6 @@
|
|
|
7316
7248
|
"account_index"
|
|
7317
7249
|
]
|
|
7318
7250
|
},
|
|
7319
|
-
"ReqHasRefereeByL1Address": {
|
|
7320
|
-
"type": "object",
|
|
7321
|
-
"properties": {
|
|
7322
|
-
"l1_address": {
|
|
7323
|
-
"type": "string"
|
|
7324
|
-
}
|
|
7325
|
-
},
|
|
7326
|
-
"title": "ReqHasRefereeByL1Address",
|
|
7327
|
-
"required": [
|
|
7328
|
-
"l1_address"
|
|
7329
|
-
]
|
|
7330
|
-
},
|
|
7331
7251
|
"ReqIsWhitelisted": {
|
|
7332
7252
|
"type": "object",
|
|
7333
7253
|
"properties": {
|
|
@@ -7425,6 +7345,9 @@
|
|
|
7425
7345
|
},
|
|
7426
7346
|
"x": {
|
|
7427
7347
|
"type": "string"
|
|
7348
|
+
},
|
|
7349
|
+
"signature": {
|
|
7350
|
+
"type": "string"
|
|
7428
7351
|
}
|
|
7429
7352
|
},
|
|
7430
7353
|
"title": "ReqUseReferralCode",
|
|
@@ -7643,6 +7566,26 @@
|
|
|
7643
7566
|
"close_out_margin_req"
|
|
7644
7567
|
]
|
|
7645
7568
|
},
|
|
7569
|
+
"SharePrice": {
|
|
7570
|
+
"type": "object",
|
|
7571
|
+
"properties": {
|
|
7572
|
+
"timestamp": {
|
|
7573
|
+
"type": "integer",
|
|
7574
|
+
"format": "int64",
|
|
7575
|
+
"example": "1640995200"
|
|
7576
|
+
},
|
|
7577
|
+
"share_price": {
|
|
7578
|
+
"type": "number",
|
|
7579
|
+
"format": "double",
|
|
7580
|
+
"example": "0.0001"
|
|
7581
|
+
}
|
|
7582
|
+
},
|
|
7583
|
+
"title": "SharePrice",
|
|
7584
|
+
"required": [
|
|
7585
|
+
"timestamp",
|
|
7586
|
+
"share_price"
|
|
7587
|
+
]
|
|
7588
|
+
},
|
|
7646
7589
|
"SimpleOrder": {
|
|
7647
7590
|
"type": "object",
|
|
7648
7591
|
"properties": {
|