dfns-sdk 0.0.0.dev0__py3-none-any.whl
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.
- dfns_sdk/__init__.py +24 -0
- dfns_sdk/_internal/__init__.py +5 -0
- dfns_sdk/_internal/http_client.py +395 -0
- dfns_sdk/auth.py +137 -0
- dfns_sdk/base_auth_api.py +129 -0
- dfns_sdk/client.py +81 -0
- dfns_sdk/delegated_client.py +97 -0
- dfns_sdk/generated/__init__.py +47 -0
- dfns_sdk/generated/agreements/__init__.py +7 -0
- dfns_sdk/generated/agreements/client.py +55 -0
- dfns_sdk/generated/agreements/delegated_client.py +95 -0
- dfns_sdk/generated/agreements/types.py +20 -0
- dfns_sdk/generated/allocations/__init__.py +7 -0
- dfns_sdk/generated/allocations/client.py +118 -0
- dfns_sdk/generated/allocations/delegated_client.py +187 -0
- dfns_sdk/generated/allocations/types.py +69 -0
- dfns_sdk/generated/auth/__init__.py +7 -0
- dfns_sdk/generated/auth/client.py +1215 -0
- dfns_sdk/generated/auth/delegated_client.py +1825 -0
- dfns_sdk/generated/auth/types.py +702 -0
- dfns_sdk/generated/exchanges/__init__.py +7 -0
- dfns_sdk/generated/exchanges/client.py +209 -0
- dfns_sdk/generated/exchanges/delegated_client.py +341 -0
- dfns_sdk/generated/exchanges/types.py +96 -0
- dfns_sdk/generated/fee_sponsors/__init__.py +7 -0
- dfns_sdk/generated/fee_sponsors/client.py +161 -0
- dfns_sdk/generated/fee_sponsors/delegated_client.py +287 -0
- dfns_sdk/generated/fee_sponsors/types.py +89 -0
- dfns_sdk/generated/keys/__init__.py +7 -0
- dfns_sdk/generated/keys/client.py +310 -0
- dfns_sdk/generated/keys/delegated_client.py +518 -0
- dfns_sdk/generated/keys/types.py +229 -0
- dfns_sdk/generated/networks/__init__.py +7 -0
- dfns_sdk/generated/networks/client.py +176 -0
- dfns_sdk/generated/networks/delegated_client.py +274 -0
- dfns_sdk/generated/networks/types.py +77 -0
- dfns_sdk/generated/permissions/__init__.py +7 -0
- dfns_sdk/generated/permissions/client.py +185 -0
- dfns_sdk/generated/permissions/delegated_client.py +344 -0
- dfns_sdk/generated/permissions/types.py +107 -0
- dfns_sdk/generated/policies/__init__.py +7 -0
- dfns_sdk/generated/policies/client.py +187 -0
- dfns_sdk/generated/policies/delegated_client.py +311 -0
- dfns_sdk/generated/policies/types.py +70 -0
- dfns_sdk/generated/signers/__init__.py +7 -0
- dfns_sdk/generated/signers/client.py +45 -0
- dfns_sdk/generated/signers/delegated_client.py +56 -0
- dfns_sdk/generated/signers/types.py +13 -0
- dfns_sdk/generated/staking/__init__.py +7 -0
- dfns_sdk/generated/staking/client.py +142 -0
- dfns_sdk/generated/staking/delegated_client.py +211 -0
- dfns_sdk/generated/staking/types.py +64 -0
- dfns_sdk/generated/swaps/__init__.py +7 -0
- dfns_sdk/generated/swaps/client.py +118 -0
- dfns_sdk/generated/swaps/delegated_client.py +157 -0
- dfns_sdk/generated/swaps/types.py +99 -0
- dfns_sdk/generated/wallets/__init__.py +7 -0
- dfns_sdk/generated/wallets/client.py +805 -0
- dfns_sdk/generated/wallets/delegated_client.py +1231 -0
- dfns_sdk/generated/wallets/types.py +534 -0
- dfns_sdk/generated/webhooks/__init__.py +7 -0
- dfns_sdk/generated/webhooks/client.py +193 -0
- dfns_sdk/generated/webhooks/delegated_client.py +320 -0
- dfns_sdk/generated/webhooks/types.py +101 -0
- dfns_sdk/types.py +72 -0
- dfns_sdk-0.0.0.dev0.dist-info/METADATA +191 -0
- dfns_sdk-0.0.0.dev0.dist-info/RECORD +69 -0
- dfns_sdk-0.0.0.dev0.dist-info/WHEEL +4 -0
- dfns_sdk-0.0.0.dev0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"""Client for the signers domain."""
|
|
2
|
+
|
|
3
|
+
from typing import Any, Literal, Optional, TypedDict, Union
|
|
4
|
+
|
|
5
|
+
from ..._internal import HttpClient
|
|
6
|
+
from . import types as T
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class SignersClient:
|
|
10
|
+
"""Client for signers operations."""
|
|
11
|
+
|
|
12
|
+
def __init__(self, http_client: HttpClient):
|
|
13
|
+
self._http = http_client
|
|
14
|
+
|
|
15
|
+
def list_key_stores(self) -> T.ListKeyStoresResponse:
|
|
16
|
+
"""
|
|
17
|
+
List Key Stores.
|
|
18
|
+
|
|
19
|
+
Returns:
|
|
20
|
+
T.ListKeyStoresResponse: The API response.
|
|
21
|
+
"""
|
|
22
|
+
return self._http.request(
|
|
23
|
+
method="GET",
|
|
24
|
+
path="/key-stores",
|
|
25
|
+
path_params={},
|
|
26
|
+
query_params=None,
|
|
27
|
+
body=None,
|
|
28
|
+
requires_signature=False,
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
def list_signers(self) -> T.ListSignersResponse:
|
|
32
|
+
"""
|
|
33
|
+
List Signers.
|
|
34
|
+
|
|
35
|
+
Returns:
|
|
36
|
+
T.ListSignersResponse: The API response.
|
|
37
|
+
"""
|
|
38
|
+
return self._http.request(
|
|
39
|
+
method="GET",
|
|
40
|
+
path="/signers",
|
|
41
|
+
path_params={},
|
|
42
|
+
query_params=None,
|
|
43
|
+
body=None,
|
|
44
|
+
requires_signature=False,
|
|
45
|
+
)
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"""Delegated client for the signers domain."""
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
from typing import Any, Literal, Optional, TypedDict, Union
|
|
5
|
+
|
|
6
|
+
from ..._internal import HttpClient
|
|
7
|
+
from ...base_auth_api import (
|
|
8
|
+
BaseAuthApi,
|
|
9
|
+
SignUserActionChallengeRequest,
|
|
10
|
+
UserActionChallengeResponse,
|
|
11
|
+
)
|
|
12
|
+
from . import types as T
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class DelegatedSignersClient:
|
|
16
|
+
"""
|
|
17
|
+
Delegated client for signers operations.
|
|
18
|
+
|
|
19
|
+
This client separates user action signing into _init() and _complete() method pairs,
|
|
20
|
+
allowing external systems to handle the signing process.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
def __init__(self, http_client: HttpClient):
|
|
24
|
+
self._http = http_client
|
|
25
|
+
|
|
26
|
+
def list_key_stores(self) -> T.ListKeyStoresResponse:
|
|
27
|
+
"""
|
|
28
|
+
List Key Stores.
|
|
29
|
+
|
|
30
|
+
Returns:
|
|
31
|
+
T.ListKeyStoresResponse: The API response.
|
|
32
|
+
"""
|
|
33
|
+
return self._http.request(
|
|
34
|
+
method="GET",
|
|
35
|
+
path="/key-stores",
|
|
36
|
+
path_params={},
|
|
37
|
+
query_params=None,
|
|
38
|
+
body=None,
|
|
39
|
+
requires_signature=False,
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
def list_signers(self) -> T.ListSignersResponse:
|
|
43
|
+
"""
|
|
44
|
+
List Signers.
|
|
45
|
+
|
|
46
|
+
Returns:
|
|
47
|
+
T.ListSignersResponse: The API response.
|
|
48
|
+
"""
|
|
49
|
+
return self._http.request(
|
|
50
|
+
method="GET",
|
|
51
|
+
path="/signers",
|
|
52
|
+
path_params={},
|
|
53
|
+
query_params=None,
|
|
54
|
+
body=None,
|
|
55
|
+
requires_signature=False,
|
|
56
|
+
)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"""Types for the signers domain."""
|
|
2
|
+
|
|
3
|
+
from typing import Any, Literal, NotRequired, Optional, TypedDict, Union
|
|
4
|
+
|
|
5
|
+
class ListKeyStoresResponse(TypedDict, total=False):
|
|
6
|
+
"""listKeyStores response."""
|
|
7
|
+
|
|
8
|
+
items: list[TypedDict]
|
|
9
|
+
|
|
10
|
+
class ListSignersResponse(TypedDict, total=False):
|
|
11
|
+
"""listSigners response."""
|
|
12
|
+
|
|
13
|
+
clusters: list[TypedDict]
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"""Client for the staking domain."""
|
|
2
|
+
|
|
3
|
+
from typing import Any, Literal, Optional, TypedDict, Union
|
|
4
|
+
|
|
5
|
+
from ..._internal import HttpClient
|
|
6
|
+
from . import types as T
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class StakingClient:
|
|
10
|
+
"""Client for staking operations."""
|
|
11
|
+
|
|
12
|
+
def __init__(self, http_client: HttpClient):
|
|
13
|
+
self._http = http_client
|
|
14
|
+
|
|
15
|
+
def list_stakes(self, query: Optional[T.ListStakesQuery] = None) -> T.ListStakesResponse:
|
|
16
|
+
"""
|
|
17
|
+
List Stakes.
|
|
18
|
+
|
|
19
|
+
Retrieve the list of stakes.
|
|
20
|
+
|
|
21
|
+
Args:
|
|
22
|
+
query: Query parameters.
|
|
23
|
+
|
|
24
|
+
Returns:
|
|
25
|
+
T.ListStakesResponse: The API response.
|
|
26
|
+
"""
|
|
27
|
+
return self._http.request(
|
|
28
|
+
method="GET",
|
|
29
|
+
path="/staking/stakes",
|
|
30
|
+
path_params={},
|
|
31
|
+
query_params=query,
|
|
32
|
+
body=None,
|
|
33
|
+
requires_signature=False,
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
def create_stake(self, body: T.CreateStakeRequest) -> T.CreateStakeResponse:
|
|
37
|
+
"""
|
|
38
|
+
Create Stake.
|
|
39
|
+
|
|
40
|
+
Create a new stake.
|
|
41
|
+
|
|
42
|
+
Args:
|
|
43
|
+
body: Request body.
|
|
44
|
+
|
|
45
|
+
Returns:
|
|
46
|
+
T.CreateStakeResponse: The API response.
|
|
47
|
+
"""
|
|
48
|
+
return self._http.request(
|
|
49
|
+
method="POST",
|
|
50
|
+
path="/staking/stakes",
|
|
51
|
+
path_params={},
|
|
52
|
+
query_params=None,
|
|
53
|
+
body=body,
|
|
54
|
+
requires_signature=True,
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
def list_stake_actions(self, stake_id: str, query: Optional[T.ListStakeActionsQuery] = None) -> T.ListStakeActionsResponse:
|
|
58
|
+
"""
|
|
59
|
+
List Stake Actions.
|
|
60
|
+
|
|
61
|
+
Retrieve the list of actions for a specific stake.
|
|
62
|
+
|
|
63
|
+
Args:
|
|
64
|
+
stake_id: Path parameter.
|
|
65
|
+
query: Query parameters.
|
|
66
|
+
|
|
67
|
+
Returns:
|
|
68
|
+
T.ListStakeActionsResponse: The API response.
|
|
69
|
+
"""
|
|
70
|
+
return self._http.request(
|
|
71
|
+
method="GET",
|
|
72
|
+
path="/staking/stakes/{stakeId}/actions",
|
|
73
|
+
path_params={"stakeId": stake_id},
|
|
74
|
+
query_params=query,
|
|
75
|
+
body=None,
|
|
76
|
+
requires_signature=False,
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
def create_stake_action(self, stake_id: str, body: T.CreateStakeActionRequest) -> T.CreateStakeActionResponse:
|
|
80
|
+
"""
|
|
81
|
+
Create Stake Action.
|
|
82
|
+
|
|
83
|
+
Create a new action for an existing stake.
|
|
84
|
+
|
|
85
|
+
Args:
|
|
86
|
+
stake_id: Path parameter.
|
|
87
|
+
body: Request body.
|
|
88
|
+
|
|
89
|
+
Returns:
|
|
90
|
+
T.CreateStakeActionResponse: The API response.
|
|
91
|
+
"""
|
|
92
|
+
return self._http.request(
|
|
93
|
+
method="POST",
|
|
94
|
+
path="/staking/stakes/{stakeId}/actions",
|
|
95
|
+
path_params={"stakeId": stake_id},
|
|
96
|
+
query_params=None,
|
|
97
|
+
body=body,
|
|
98
|
+
requires_signature=True,
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
def get_stakes(self, stake_id: str, query: Optional[T.GetStakesQuery] = None) -> T.GetStakesResponse:
|
|
102
|
+
"""
|
|
103
|
+
Get Stakes.
|
|
104
|
+
|
|
105
|
+
Retrieve the details of a specific stake.
|
|
106
|
+
|
|
107
|
+
Args:
|
|
108
|
+
stake_id: Path parameter.
|
|
109
|
+
query: Query parameters.
|
|
110
|
+
|
|
111
|
+
Returns:
|
|
112
|
+
T.GetStakesResponse: The API response.
|
|
113
|
+
"""
|
|
114
|
+
return self._http.request(
|
|
115
|
+
method="GET",
|
|
116
|
+
path="/staking/stakes/{stakeId}",
|
|
117
|
+
path_params={"stakeId": stake_id},
|
|
118
|
+
query_params=query,
|
|
119
|
+
body=None,
|
|
120
|
+
requires_signature=False,
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
def get_stake_rewards(self, stake_id: str) -> T.GetStakeRewardsResponse:
|
|
124
|
+
"""
|
|
125
|
+
Get Stake Rewards.
|
|
126
|
+
|
|
127
|
+
Retrieves the rewards linked to a specific stake.
|
|
128
|
+
|
|
129
|
+
Args:
|
|
130
|
+
stake_id: Path parameter.
|
|
131
|
+
|
|
132
|
+
Returns:
|
|
133
|
+
T.GetStakeRewardsResponse: The API response.
|
|
134
|
+
"""
|
|
135
|
+
return self._http.request(
|
|
136
|
+
method="GET",
|
|
137
|
+
path="/staking/stakes/{stakeId}/rewards",
|
|
138
|
+
path_params={"stakeId": stake_id},
|
|
139
|
+
query_params=None,
|
|
140
|
+
body=None,
|
|
141
|
+
requires_signature=False,
|
|
142
|
+
)
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
"""Delegated client for the staking domain."""
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
from typing import Any, Literal, Optional, TypedDict, Union
|
|
5
|
+
|
|
6
|
+
from ..._internal import HttpClient
|
|
7
|
+
from ...base_auth_api import (
|
|
8
|
+
BaseAuthApi,
|
|
9
|
+
SignUserActionChallengeRequest,
|
|
10
|
+
UserActionChallengeResponse,
|
|
11
|
+
)
|
|
12
|
+
from . import types as T
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class DelegatedStakingClient:
|
|
16
|
+
"""
|
|
17
|
+
Delegated client for staking operations.
|
|
18
|
+
|
|
19
|
+
This client separates user action signing into _init() and _complete() method pairs,
|
|
20
|
+
allowing external systems to handle the signing process.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
def __init__(self, http_client: HttpClient):
|
|
24
|
+
self._http = http_client
|
|
25
|
+
|
|
26
|
+
def list_stakes(self, query: Optional[T.ListStakesQuery] = None) -> T.ListStakesResponse:
|
|
27
|
+
"""
|
|
28
|
+
List Stakes.
|
|
29
|
+
|
|
30
|
+
Retrieve the list of stakes.
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
query: Query parameters.
|
|
34
|
+
|
|
35
|
+
Returns:
|
|
36
|
+
T.ListStakesResponse: The API response.
|
|
37
|
+
"""
|
|
38
|
+
return self._http.request(
|
|
39
|
+
method="GET",
|
|
40
|
+
path="/staking/stakes",
|
|
41
|
+
path_params={},
|
|
42
|
+
query_params=query,
|
|
43
|
+
body=None,
|
|
44
|
+
requires_signature=False,
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
def create_stake_init(self, body: T.CreateStakeRequest) -> UserActionChallengeResponse:
|
|
48
|
+
"""
|
|
49
|
+
Initialize Create Stake.
|
|
50
|
+
|
|
51
|
+
Creates a user action challenge for external signing.
|
|
52
|
+
|
|
53
|
+
Args:
|
|
54
|
+
body: Request body.
|
|
55
|
+
|
|
56
|
+
Returns:
|
|
57
|
+
UserActionChallengeResponse: The challenge to sign externally.
|
|
58
|
+
"""
|
|
59
|
+
path = "/staking/stakes"
|
|
60
|
+
payload = json.dumps(body, separators=(",", ":")) if body else ""
|
|
61
|
+
|
|
62
|
+
return BaseAuthApi.create_user_action_challenge(
|
|
63
|
+
self._http,
|
|
64
|
+
user_action_http_method="POST",
|
|
65
|
+
user_action_http_path=path,
|
|
66
|
+
user_action_payload=payload,
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
def create_stake_complete(self, body: T.CreateStakeRequest, signed_challenge: SignUserActionChallengeRequest) -> T.CreateStakeResponse:
|
|
70
|
+
"""
|
|
71
|
+
Complete Create Stake.
|
|
72
|
+
|
|
73
|
+
Submits the signed challenge and makes the API request.
|
|
74
|
+
|
|
75
|
+
Args:
|
|
76
|
+
body: Request body.
|
|
77
|
+
signed_challenge: The signed challenge from external signing.
|
|
78
|
+
|
|
79
|
+
Returns:
|
|
80
|
+
T.CreateStakeResponse: The API response.
|
|
81
|
+
"""
|
|
82
|
+
user_action_result = BaseAuthApi.sign_user_action_challenge(
|
|
83
|
+
self._http, signed_challenge
|
|
84
|
+
)
|
|
85
|
+
user_action_token = user_action_result["userAction"]
|
|
86
|
+
|
|
87
|
+
return self._http.request_with_user_action(
|
|
88
|
+
method="POST",
|
|
89
|
+
path="/staking/stakes",
|
|
90
|
+
path_params={},
|
|
91
|
+
query_params=None,
|
|
92
|
+
body=body,
|
|
93
|
+
user_action=user_action_token,
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
def list_stake_actions(self, stake_id: str, query: Optional[T.ListStakeActionsQuery] = None) -> T.ListStakeActionsResponse:
|
|
97
|
+
"""
|
|
98
|
+
List Stake Actions.
|
|
99
|
+
|
|
100
|
+
Retrieve the list of actions for a specific stake.
|
|
101
|
+
|
|
102
|
+
Args:
|
|
103
|
+
stake_id: Path parameter.
|
|
104
|
+
query: Query parameters.
|
|
105
|
+
|
|
106
|
+
Returns:
|
|
107
|
+
T.ListStakeActionsResponse: The API response.
|
|
108
|
+
"""
|
|
109
|
+
return self._http.request(
|
|
110
|
+
method="GET",
|
|
111
|
+
path="/staking/stakes/{stakeId}/actions",
|
|
112
|
+
path_params={"stakeId": stake_id},
|
|
113
|
+
query_params=query,
|
|
114
|
+
body=None,
|
|
115
|
+
requires_signature=False,
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
def create_stake_action_init(self, stake_id: str, body: T.CreateStakeActionRequest) -> UserActionChallengeResponse:
|
|
119
|
+
"""
|
|
120
|
+
Initialize Create Stake Action.
|
|
121
|
+
|
|
122
|
+
Creates a user action challenge for external signing.
|
|
123
|
+
|
|
124
|
+
Args:
|
|
125
|
+
stake_id: Path parameter.
|
|
126
|
+
body: Request body.
|
|
127
|
+
|
|
128
|
+
Returns:
|
|
129
|
+
UserActionChallengeResponse: The challenge to sign externally.
|
|
130
|
+
"""
|
|
131
|
+
path = "/staking/stakes/{stakeId}/actions"
|
|
132
|
+
path = path.replace("{stakeId}", str(stake_id))
|
|
133
|
+
payload = json.dumps(body, separators=(",", ":")) if body else ""
|
|
134
|
+
|
|
135
|
+
return BaseAuthApi.create_user_action_challenge(
|
|
136
|
+
self._http,
|
|
137
|
+
user_action_http_method="POST",
|
|
138
|
+
user_action_http_path=path,
|
|
139
|
+
user_action_payload=payload,
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
def create_stake_action_complete(self, stake_id: str, body: T.CreateStakeActionRequest, signed_challenge: SignUserActionChallengeRequest) -> T.CreateStakeActionResponse:
|
|
143
|
+
"""
|
|
144
|
+
Complete Create Stake Action.
|
|
145
|
+
|
|
146
|
+
Submits the signed challenge and makes the API request.
|
|
147
|
+
|
|
148
|
+
Args:
|
|
149
|
+
stake_id: Path parameter.
|
|
150
|
+
body: Request body.
|
|
151
|
+
signed_challenge: The signed challenge from external signing.
|
|
152
|
+
|
|
153
|
+
Returns:
|
|
154
|
+
T.CreateStakeActionResponse: The API response.
|
|
155
|
+
"""
|
|
156
|
+
user_action_result = BaseAuthApi.sign_user_action_challenge(
|
|
157
|
+
self._http, signed_challenge
|
|
158
|
+
)
|
|
159
|
+
user_action_token = user_action_result["userAction"]
|
|
160
|
+
|
|
161
|
+
return self._http.request_with_user_action(
|
|
162
|
+
method="POST",
|
|
163
|
+
path="/staking/stakes/{stakeId}/actions",
|
|
164
|
+
path_params={"stakeId": stake_id},
|
|
165
|
+
query_params=None,
|
|
166
|
+
body=body,
|
|
167
|
+
user_action=user_action_token,
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
def get_stakes(self, stake_id: str, query: Optional[T.GetStakesQuery] = None) -> T.GetStakesResponse:
|
|
171
|
+
"""
|
|
172
|
+
Get Stakes.
|
|
173
|
+
|
|
174
|
+
Retrieve the details of a specific stake.
|
|
175
|
+
|
|
176
|
+
Args:
|
|
177
|
+
stake_id: Path parameter.
|
|
178
|
+
query: Query parameters.
|
|
179
|
+
|
|
180
|
+
Returns:
|
|
181
|
+
T.GetStakesResponse: The API response.
|
|
182
|
+
"""
|
|
183
|
+
return self._http.request(
|
|
184
|
+
method="GET",
|
|
185
|
+
path="/staking/stakes/{stakeId}",
|
|
186
|
+
path_params={"stakeId": stake_id},
|
|
187
|
+
query_params=query,
|
|
188
|
+
body=None,
|
|
189
|
+
requires_signature=False,
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
def get_stake_rewards(self, stake_id: str) -> T.GetStakeRewardsResponse:
|
|
193
|
+
"""
|
|
194
|
+
Get Stake Rewards.
|
|
195
|
+
|
|
196
|
+
Retrieves the rewards linked to a specific stake.
|
|
197
|
+
|
|
198
|
+
Args:
|
|
199
|
+
stake_id: Path parameter.
|
|
200
|
+
|
|
201
|
+
Returns:
|
|
202
|
+
T.GetStakeRewardsResponse: The API response.
|
|
203
|
+
"""
|
|
204
|
+
return self._http.request(
|
|
205
|
+
method="GET",
|
|
206
|
+
path="/staking/stakes/{stakeId}/rewards",
|
|
207
|
+
path_params={"stakeId": stake_id},
|
|
208
|
+
query_params=None,
|
|
209
|
+
body=None,
|
|
210
|
+
requires_signature=False,
|
|
211
|
+
)
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"""Types for the staking domain."""
|
|
2
|
+
|
|
3
|
+
from typing import Any, Literal, NotRequired, Optional, TypedDict, Union
|
|
4
|
+
|
|
5
|
+
class ListStakesResponse(TypedDict, total=False):
|
|
6
|
+
"""listStakes response."""
|
|
7
|
+
|
|
8
|
+
items: list[TypedDict]
|
|
9
|
+
next_page_token: NotRequired[str]
|
|
10
|
+
|
|
11
|
+
class ListStakesQuery(TypedDict, total=False):
|
|
12
|
+
"""listStakes query parameters."""
|
|
13
|
+
|
|
14
|
+
limit: NotRequired[int]
|
|
15
|
+
pagination_token: NotRequired[str]
|
|
16
|
+
|
|
17
|
+
class CreateStakeRequest(TypedDict, total=False):
|
|
18
|
+
"""createStake request body."""
|
|
19
|
+
|
|
20
|
+
external_id: NotRequired[str]
|
|
21
|
+
|
|
22
|
+
class CreateStakeResponse(TypedDict, total=False):
|
|
23
|
+
"""createStake response."""
|
|
24
|
+
|
|
25
|
+
actions: list[TypedDict]
|
|
26
|
+
|
|
27
|
+
class ListStakeActionsResponse(TypedDict, total=False):
|
|
28
|
+
"""listStakeActions response."""
|
|
29
|
+
|
|
30
|
+
items: list[TypedDict]
|
|
31
|
+
next_page_token: NotRequired[str]
|
|
32
|
+
|
|
33
|
+
class ListStakeActionsQuery(TypedDict, total=False):
|
|
34
|
+
"""listStakeActions query parameters."""
|
|
35
|
+
|
|
36
|
+
limit: NotRequired[int]
|
|
37
|
+
pagination_token: NotRequired[str]
|
|
38
|
+
|
|
39
|
+
class CreateStakeActionRequest(TypedDict, total=False):
|
|
40
|
+
"""createStakeAction request body."""
|
|
41
|
+
|
|
42
|
+
external_id: NotRequired[str]
|
|
43
|
+
|
|
44
|
+
class CreateStakeActionResponse(TypedDict, total=False):
|
|
45
|
+
"""createStakeAction response."""
|
|
46
|
+
|
|
47
|
+
actions: list[TypedDict]
|
|
48
|
+
|
|
49
|
+
class GetStakesResponse(TypedDict, total=False):
|
|
50
|
+
"""getStakes response."""
|
|
51
|
+
|
|
52
|
+
actions: list[TypedDict]
|
|
53
|
+
|
|
54
|
+
class GetStakesQuery(TypedDict, total=False):
|
|
55
|
+
"""getStakes query parameters."""
|
|
56
|
+
|
|
57
|
+
limit: NotRequired[int]
|
|
58
|
+
pagination_token: NotRequired[str]
|
|
59
|
+
|
|
60
|
+
class GetStakeRewardsResponse(TypedDict, total=False):
|
|
61
|
+
"""getStakeRewards response."""
|
|
62
|
+
|
|
63
|
+
symbol: str
|
|
64
|
+
balance: str
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"""Client for the swaps domain."""
|
|
2
|
+
|
|
3
|
+
from typing import Any, Literal, Optional, TypedDict, Union
|
|
4
|
+
|
|
5
|
+
from ..._internal import HttpClient
|
|
6
|
+
from . import types as T
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class SwapsClient:
|
|
10
|
+
"""Client for swaps operations."""
|
|
11
|
+
|
|
12
|
+
def __init__(self, http_client: HttpClient):
|
|
13
|
+
self._http = http_client
|
|
14
|
+
|
|
15
|
+
def list_swaps(self, query: Optional[T.ListSwapsQuery] = None) -> T.ListSwapsResponse:
|
|
16
|
+
"""
|
|
17
|
+
List Swaps.
|
|
18
|
+
|
|
19
|
+
List all swaps with pagination
|
|
20
|
+
|
|
21
|
+
Args:
|
|
22
|
+
query: Query parameters.
|
|
23
|
+
|
|
24
|
+
Returns:
|
|
25
|
+
T.ListSwapsResponse: The API response.
|
|
26
|
+
"""
|
|
27
|
+
return self._http.request(
|
|
28
|
+
method="GET",
|
|
29
|
+
path="/swaps",
|
|
30
|
+
path_params={},
|
|
31
|
+
query_params=query,
|
|
32
|
+
body=None,
|
|
33
|
+
requires_signature=False,
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
def create_swap(self, body: T.CreateSwapRequest) -> T.CreateSwapResponse:
|
|
37
|
+
"""
|
|
38
|
+
Create Swap.
|
|
39
|
+
|
|
40
|
+
Create a new swap based on an existing quote. This is the second step of the [Swap flow](https://docs.dfns.co/api-reference/swaps#flow-overview).
|
|
41
|
+
|
|
42
|
+
Args:
|
|
43
|
+
body: Request body.
|
|
44
|
+
|
|
45
|
+
Returns:
|
|
46
|
+
T.CreateSwapResponse: The API response.
|
|
47
|
+
"""
|
|
48
|
+
return self._http.request(
|
|
49
|
+
method="POST",
|
|
50
|
+
path="/swaps",
|
|
51
|
+
path_params={},
|
|
52
|
+
query_params=None,
|
|
53
|
+
body=body,
|
|
54
|
+
requires_signature=True,
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
def request_swap_quote(self, body: T.RequestSwapQuoteRequest) -> T.RequestSwapQuoteResponse:
|
|
58
|
+
"""
|
|
59
|
+
Request Swap Quote.
|
|
60
|
+
|
|
61
|
+
Request a quote from a given provider for swapping assets. This is the first step of the [Swap flow](https://docs.dfns.co/api-reference/swaps#flow-overview).
|
|
62
|
+
|
|
63
|
+
Args:
|
|
64
|
+
body: Request body.
|
|
65
|
+
|
|
66
|
+
Returns:
|
|
67
|
+
T.RequestSwapQuoteResponse: The API response.
|
|
68
|
+
"""
|
|
69
|
+
return self._http.request(
|
|
70
|
+
method="POST",
|
|
71
|
+
path="/swaps/quotes",
|
|
72
|
+
path_params={},
|
|
73
|
+
query_params=None,
|
|
74
|
+
body=body,
|
|
75
|
+
requires_signature=False,
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
def get_swap(self, swap_id: str) -> T.GetSwapResponse:
|
|
79
|
+
"""
|
|
80
|
+
Get Swap.
|
|
81
|
+
|
|
82
|
+
Get details of a specific swap by its ID
|
|
83
|
+
|
|
84
|
+
Args:
|
|
85
|
+
swap_id: Id of the swap for which we want to get details.
|
|
86
|
+
|
|
87
|
+
Returns:
|
|
88
|
+
T.GetSwapResponse: The API response.
|
|
89
|
+
"""
|
|
90
|
+
return self._http.request(
|
|
91
|
+
method="GET",
|
|
92
|
+
path="/swaps/{swapId}",
|
|
93
|
+
path_params={"swapId": swap_id},
|
|
94
|
+
query_params=None,
|
|
95
|
+
body=None,
|
|
96
|
+
requires_signature=False,
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
def get_swap_quote(self, quote_id: str) -> T.GetSwapQuoteResponse:
|
|
100
|
+
"""
|
|
101
|
+
Get Swap Quote.
|
|
102
|
+
|
|
103
|
+
Get details of a specific swap quote by its ID
|
|
104
|
+
|
|
105
|
+
Args:
|
|
106
|
+
quote_id: The ID of the Swap Quote.
|
|
107
|
+
|
|
108
|
+
Returns:
|
|
109
|
+
T.GetSwapQuoteResponse: The API response.
|
|
110
|
+
"""
|
|
111
|
+
return self._http.request(
|
|
112
|
+
method="GET",
|
|
113
|
+
path="/swaps/quotes/{quoteId}",
|
|
114
|
+
path_params={"quoteId": quote_id},
|
|
115
|
+
query_params=None,
|
|
116
|
+
body=None,
|
|
117
|
+
requires_signature=False,
|
|
118
|
+
)
|