chipi-stack 2.0.0__tar.gz → 2.1.0__tar.gz
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.
- {chipi_stack-2.0.0/chipi_stack.egg-info → chipi_stack-2.1.0}/PKG-INFO +6 -5
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/README.md +5 -3
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/__init__.py +12 -1
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/constants.py +2 -1
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/models/core.py +6 -0
- chipi_stack-2.1.0/chipi_sdk/models/sku_purchase.py +40 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/sdk.py +59 -0
- chipi_stack-2.1.0/chipi_sdk/sku_purchases.py +98 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0/chipi_stack.egg-info}/PKG-INFO +6 -5
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_stack.egg-info/SOURCES.txt +2 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_stack.egg-info/requires.txt +0 -1
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/pyproject.toml +1 -2
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/LICENSE +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/MANIFEST.in +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/client.py +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/encryption.py +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/errors.py +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/execute_paymaster.py +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/formatters.py +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/models/__init__.py +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/models/session.py +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/models/sku.py +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/models/sku_transaction.py +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/models/transaction.py +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/models/user.py +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/models/wallet.py +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/models/x402.py +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/py.typed +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/sessions.py +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/sku_transactions.py +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/skus.py +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/transactions.py +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/users.py +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/validators.py +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/wallets.py +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/x402_client.py +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/x402_facilitator.py +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_sdk/x402_middleware.py +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_stack.egg-info/dependency_links.txt +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/chipi_stack.egg-info/top_level.txt +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/setup.cfg +0 -0
- {chipi_stack-2.0.0 → chipi_stack-2.1.0}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: chipi-stack
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.1.0
|
|
4
4
|
Summary: Python SDK for Starknet Gasless Transactions via Chipi
|
|
5
5
|
Author-email: Carlos Castillo <carlos@chipipay.com>, Roberto Yamanaka <roberto@chipipay.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -34,17 +34,18 @@ Requires-Dist: black>=24.0.0; extra == "dev"
|
|
|
34
34
|
Requires-Dist: ruff>=0.3.0; extra == "dev"
|
|
35
35
|
Requires-Dist: mypy>=1.8.0; extra == "dev"
|
|
36
36
|
Requires-Dist: build>=1.0.0; extra == "dev"
|
|
37
|
-
Requires-Dist: twine>=5.0.0; extra == "dev"
|
|
38
37
|
Dynamic: license-file
|
|
39
38
|
|
|
40
39
|
# Chipi Python SDK
|
|
41
40
|
|
|
42
|
-
[](https://badge.fury.io/py/chipi-stack)
|
|
43
42
|
[](https://www.python.org/downloads/)
|
|
44
43
|
[](https://opensource.org/licenses/MIT)
|
|
45
44
|
|
|
46
45
|
Python SDK for executing gasless transactions on Starknet via Chipi's paymaster infrastructure.
|
|
47
46
|
|
|
47
|
+
> Published to PyPI as **`chipi-stack`** — matches the `@chipi-stack/*` npm scope. The legacy `chipi-python` package on PyPI is deprecated.
|
|
48
|
+
|
|
48
49
|
## Features
|
|
49
50
|
|
|
50
51
|
- 🚀 **Gasless Transactions** - Execute transactions without paying gas fees
|
|
@@ -57,13 +58,13 @@ Python SDK for executing gasless transactions on Starknet via Chipi's paymaster
|
|
|
57
58
|
## Installation
|
|
58
59
|
|
|
59
60
|
```bash
|
|
60
|
-
pip install chipi-
|
|
61
|
+
pip install chipi-stack
|
|
61
62
|
```
|
|
62
63
|
|
|
63
64
|
Or with uv:
|
|
64
65
|
|
|
65
66
|
```bash
|
|
66
|
-
uv add chipi-
|
|
67
|
+
uv add chipi-stack
|
|
67
68
|
```
|
|
68
69
|
|
|
69
70
|
### Requirements
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
# Chipi Python SDK
|
|
2
2
|
|
|
3
|
-
[](https://badge.fury.io/py/chipi-stack)
|
|
4
4
|
[](https://www.python.org/downloads/)
|
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
6
|
|
|
7
7
|
Python SDK for executing gasless transactions on Starknet via Chipi's paymaster infrastructure.
|
|
8
8
|
|
|
9
|
+
> Published to PyPI as **`chipi-stack`** — matches the `@chipi-stack/*` npm scope. The legacy `chipi-python` package on PyPI is deprecated.
|
|
10
|
+
|
|
9
11
|
## Features
|
|
10
12
|
|
|
11
13
|
- 🚀 **Gasless Transactions** - Execute transactions without paying gas fees
|
|
@@ -18,13 +20,13 @@ Python SDK for executing gasless transactions on Starknet via Chipi's paymaster
|
|
|
18
20
|
## Installation
|
|
19
21
|
|
|
20
22
|
```bash
|
|
21
|
-
pip install chipi-
|
|
23
|
+
pip install chipi-stack
|
|
22
24
|
```
|
|
23
25
|
|
|
24
26
|
Or with uv:
|
|
25
27
|
|
|
26
28
|
```bash
|
|
27
|
-
uv add chipi-
|
|
29
|
+
uv add chipi-stack
|
|
28
30
|
```
|
|
29
31
|
|
|
30
32
|
### Requirements
|
|
@@ -5,7 +5,7 @@ A Python SDK for interacting with Chipi's gasless transaction infrastructure on
|
|
|
5
5
|
Supports wallet creation, transaction execution, session keys, and more.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
__version__ = "2.
|
|
8
|
+
__version__ = "2.1.0"
|
|
9
9
|
|
|
10
10
|
# Main SDK class
|
|
11
11
|
from .sdk import ChipiSDK
|
|
@@ -19,6 +19,7 @@ from .transactions import ChipiTransactions
|
|
|
19
19
|
from .sessions import ChipiSessions
|
|
20
20
|
from .skus import ChipiSkus
|
|
21
21
|
from .sku_transactions import ChipiSkuTransactions
|
|
22
|
+
from .sku_purchases import ChipiSkuPurchases
|
|
22
23
|
from .users import ChipiUsers
|
|
23
24
|
|
|
24
25
|
# Models - Core
|
|
@@ -26,6 +27,7 @@ from .models.core import (
|
|
|
26
27
|
Chain,
|
|
27
28
|
ChainToken,
|
|
28
29
|
ChipiSDKConfig,
|
|
30
|
+
Currency,
|
|
29
31
|
PaginatedResponse,
|
|
30
32
|
PaginationQuery,
|
|
31
33
|
StarknetContract,
|
|
@@ -103,6 +105,11 @@ from .models.sku_transaction import (
|
|
|
103
105
|
SkuTransaction,
|
|
104
106
|
)
|
|
105
107
|
|
|
108
|
+
# Models - SKU Purchase (bill payments)
|
|
109
|
+
from .models.sku_purchase import (
|
|
110
|
+
CreateSkuPurchaseParams,
|
|
111
|
+
)
|
|
112
|
+
|
|
106
113
|
# Models - User
|
|
107
114
|
from .models.user import (
|
|
108
115
|
CreateUserParams,
|
|
@@ -205,11 +212,13 @@ __all__ = [
|
|
|
205
212
|
"ChipiSessions",
|
|
206
213
|
"ChipiSkus",
|
|
207
214
|
"ChipiSkuTransactions",
|
|
215
|
+
"ChipiSkuPurchases",
|
|
208
216
|
"ChipiUsers",
|
|
209
217
|
# Core models
|
|
210
218
|
"Chain",
|
|
211
219
|
"ChainToken",
|
|
212
220
|
"ChipiSDKConfig",
|
|
221
|
+
"Currency",
|
|
213
222
|
"PaginatedResponse",
|
|
214
223
|
"PaginationQuery",
|
|
215
224
|
"StarknetContract",
|
|
@@ -270,6 +279,8 @@ __all__ = [
|
|
|
270
279
|
# SKU Transaction models
|
|
271
280
|
"CreateSkuTransactionParams",
|
|
272
281
|
"SkuTransaction",
|
|
282
|
+
# SKU Purchase models (bill payments)
|
|
283
|
+
"CreateSkuPurchaseParams",
|
|
273
284
|
# User models
|
|
274
285
|
"CreateUserParams",
|
|
275
286
|
"GetUserParams",
|
|
@@ -35,7 +35,8 @@ API_ENDPOINTS = {
|
|
|
35
35
|
"CHIPI_WALLETS": "/chipi-wallets",
|
|
36
36
|
"TRANSACTIONS": "/transactions",
|
|
37
37
|
"SKUS": "/skus",
|
|
38
|
-
"
|
|
38
|
+
"SKU_PURCHASES": "/sku-purchases",
|
|
39
|
+
"SKU_TRANSACTIONS": "/sku-transactions", # legacy / deprecated — see purchase_sku
|
|
39
40
|
"EXCHANGES": "/exchanges",
|
|
40
41
|
"USERS": "/users",
|
|
41
42
|
}
|
|
@@ -22,6 +22,12 @@ class ChainToken(str, Enum):
|
|
|
22
22
|
OTHER = "OTHER"
|
|
23
23
|
|
|
24
24
|
|
|
25
|
+
class Currency(str, Enum):
|
|
26
|
+
"""Local currencies supported by Chipi services (e.g. SKU purchases)."""
|
|
27
|
+
MXN = "MXN"
|
|
28
|
+
USD = "USD"
|
|
29
|
+
|
|
30
|
+
|
|
25
31
|
class ChipiSDKConfig(BaseModel):
|
|
26
32
|
"""Configuration for initializing the Chipi SDK."""
|
|
27
33
|
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"""Bill payment / SKU purchase types — mirrors @chipi-stack/types CreateSkuPurchaseParams."""
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
4
|
+
|
|
5
|
+
from .core import Chain, ChainToken, Currency
|
|
6
|
+
from .wallet import WalletData, to_camel
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class CreateSkuPurchaseParams(BaseModel):
|
|
10
|
+
"""
|
|
11
|
+
Parameters for charging a user's gasless wallet for a SKU (bill payment,
|
|
12
|
+
gift card, etc.). Mirrors @chipi-stack/types CreateSkuPurchaseParams; the
|
|
13
|
+
backend endpoint is POST /sku-purchases.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel)
|
|
17
|
+
|
|
18
|
+
sku_id: str = Field(..., description="SKU identifier from getSkuList / getSku")
|
|
19
|
+
sku_reference: str = Field(
|
|
20
|
+
...,
|
|
21
|
+
description=(
|
|
22
|
+
"User-facing reference required by the SKU (e.g. phone number for a "
|
|
23
|
+
"phone recharge, account number for a utility bill). Validated "
|
|
24
|
+
"server-side against the SKU's referenceRegexValidation."
|
|
25
|
+
),
|
|
26
|
+
)
|
|
27
|
+
currency_amount: float = Field(
|
|
28
|
+
...,
|
|
29
|
+
gt=0,
|
|
30
|
+
description="Amount in the SKU's local currency (e.g. 200 for $200 MXN). Must be > 0.",
|
|
31
|
+
)
|
|
32
|
+
currency: Currency = Field(..., description="Local currency of currency_amount.")
|
|
33
|
+
chain: Chain = Field(..., description="Settlement chain (currently STARKNET).")
|
|
34
|
+
token: ChainToken = Field(
|
|
35
|
+
..., description="Token used to pay (typically USDC)."
|
|
36
|
+
)
|
|
37
|
+
encrypt_key: str = Field(..., description="User PIN that decrypts the wallet.")
|
|
38
|
+
wallet: WalletData = Field(
|
|
39
|
+
..., description="The user's gasless wallet (publicKey + encryptedPrivateKey)."
|
|
40
|
+
)
|
|
@@ -32,6 +32,7 @@ from .models.wallet import (
|
|
|
32
32
|
from .models.session import ExecuteWithSessionParams
|
|
33
33
|
from .models.sku import Sku, GetSkuListQuery
|
|
34
34
|
from .models.sku_transaction import CreateSkuTransactionParams, SkuTransaction
|
|
35
|
+
from .models.sku_purchase import CreateSkuPurchaseParams
|
|
35
36
|
from .models.user import User, CreateUserParams, GetUserParams
|
|
36
37
|
from .client import ChipiClient
|
|
37
38
|
from .wallets import ChipiWallets
|
|
@@ -39,6 +40,7 @@ from .transactions import ChipiTransactions
|
|
|
39
40
|
from .sessions import ChipiSessions
|
|
40
41
|
from .skus import ChipiSkus
|
|
41
42
|
from .sku_transactions import ChipiSkuTransactions
|
|
43
|
+
from .sku_purchases import ChipiSkuPurchases
|
|
42
44
|
from .users import ChipiUsers
|
|
43
45
|
from .formatters import format_amount
|
|
44
46
|
from .constants import STARKNET_NETWORKS, CONTRACT_ADDRESSES
|
|
@@ -64,6 +66,7 @@ class ChipiSDK:
|
|
|
64
66
|
self.sessions = ChipiSessions(self.client)
|
|
65
67
|
self.skus = ChipiSkus(self.client)
|
|
66
68
|
self.sku_transactions = ChipiSkuTransactions(self.client)
|
|
69
|
+
self.sku_purchases = ChipiSkuPurchases(self.client)
|
|
67
70
|
self.users = ChipiUsers(self.client)
|
|
68
71
|
|
|
69
72
|
def _resolve_bearer_token(self, bearer_token: Optional[str] = None) -> str:
|
|
@@ -938,6 +941,62 @@ class ChipiSDK:
|
|
|
938
941
|
bearer_token=self._resolve_bearer_token(bearer_token),
|
|
939
942
|
)
|
|
940
943
|
|
|
944
|
+
# ===== SKU Purchase (Bill payments) =====
|
|
945
|
+
|
|
946
|
+
async def apurchase_sku(
|
|
947
|
+
self,
|
|
948
|
+
params: CreateSkuPurchaseParams,
|
|
949
|
+
bearer_token: Optional[str] = None,
|
|
950
|
+
) -> Transaction:
|
|
951
|
+
"""
|
|
952
|
+
Charge a gasless wallet for a SKU (bill payment, gift card, ...) — async.
|
|
953
|
+
|
|
954
|
+
Posts to the public POST /sku-purchases endpoint. Mirrors
|
|
955
|
+
ChipiServerSDK.purchaseSku in the Node SDK.
|
|
956
|
+
"""
|
|
957
|
+
return await self.sku_purchases.apurchase_sku(
|
|
958
|
+
params=params,
|
|
959
|
+
bearer_token=self._resolve_bearer_token(bearer_token),
|
|
960
|
+
)
|
|
961
|
+
|
|
962
|
+
def purchase_sku(
|
|
963
|
+
self,
|
|
964
|
+
params: CreateSkuPurchaseParams,
|
|
965
|
+
bearer_token: Optional[str] = None,
|
|
966
|
+
) -> Transaction:
|
|
967
|
+
"""
|
|
968
|
+
Charge a gasless wallet for a SKU (bill payment, gift card, ...) — sync.
|
|
969
|
+
|
|
970
|
+
Posts to the public POST /sku-purchases endpoint. Mirrors
|
|
971
|
+
ChipiServerSDK.purchaseSku in the Node SDK.
|
|
972
|
+
"""
|
|
973
|
+
return self.sku_purchases.purchase_sku(
|
|
974
|
+
params=params,
|
|
975
|
+
bearer_token=self._resolve_bearer_token(bearer_token),
|
|
976
|
+
)
|
|
977
|
+
|
|
978
|
+
async def aget_sku_purchase(
|
|
979
|
+
self,
|
|
980
|
+
purchase_id: str,
|
|
981
|
+
bearer_token: Optional[str] = None,
|
|
982
|
+
) -> Transaction:
|
|
983
|
+
"""Get a SKU purchase by id (async). Use to poll for SUCCESS / FAILED."""
|
|
984
|
+
return await self.sku_purchases.aget_sku_purchase(
|
|
985
|
+
purchase_id=purchase_id,
|
|
986
|
+
bearer_token=self._resolve_bearer_token(bearer_token),
|
|
987
|
+
)
|
|
988
|
+
|
|
989
|
+
def get_sku_purchase(
|
|
990
|
+
self,
|
|
991
|
+
purchase_id: str,
|
|
992
|
+
bearer_token: Optional[str] = None,
|
|
993
|
+
) -> Transaction:
|
|
994
|
+
"""Get a SKU purchase by id (sync). Use to poll for SUCCESS / FAILED."""
|
|
995
|
+
return self.sku_purchases.get_sku_purchase(
|
|
996
|
+
purchase_id=purchase_id,
|
|
997
|
+
bearer_token=self._resolve_bearer_token(bearer_token),
|
|
998
|
+
)
|
|
999
|
+
|
|
941
1000
|
# ===== User Methods =====
|
|
942
1001
|
|
|
943
1002
|
async def aget_user(
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"""SKU purchase service — bill payments, gift cards, etc."""
|
|
2
|
+
|
|
3
|
+
from .client import ChipiClient
|
|
4
|
+
from .constants import API_ENDPOINTS
|
|
5
|
+
from .models.sku_purchase import CreateSkuPurchaseParams
|
|
6
|
+
from .models.transaction import Transaction
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class ChipiSkuPurchases:
|
|
10
|
+
"""SKU purchase / bill payment service."""
|
|
11
|
+
|
|
12
|
+
def __init__(self, client: ChipiClient):
|
|
13
|
+
"""
|
|
14
|
+
Initialize SKU purchase manager.
|
|
15
|
+
|
|
16
|
+
Args:
|
|
17
|
+
client: Chipi HTTP client
|
|
18
|
+
"""
|
|
19
|
+
self.client = client
|
|
20
|
+
|
|
21
|
+
async def apurchase_sku(
|
|
22
|
+
self, params: CreateSkuPurchaseParams, bearer_token: str
|
|
23
|
+
) -> Transaction:
|
|
24
|
+
"""
|
|
25
|
+
Charge a gasless wallet for a SKU (bill payment, gift card, etc.) — async.
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
params: Purchase parameters (skuId, skuReference, amount, wallet, ...)
|
|
29
|
+
bearer_token: Authentication token
|
|
30
|
+
|
|
31
|
+
Returns:
|
|
32
|
+
Transaction record (poll via aget_sku_purchase / get_sku_purchase
|
|
33
|
+
for SUCCESS / FAILED status).
|
|
34
|
+
"""
|
|
35
|
+
response = await self.client.apost(
|
|
36
|
+
endpoint=API_ENDPOINTS["SKU_PURCHASES"],
|
|
37
|
+
bearer_token=bearer_token,
|
|
38
|
+
body=params.model_dump(by_alias=True),
|
|
39
|
+
)
|
|
40
|
+
return Transaction(**response)
|
|
41
|
+
|
|
42
|
+
def purchase_sku(
|
|
43
|
+
self, params: CreateSkuPurchaseParams, bearer_token: str
|
|
44
|
+
) -> Transaction:
|
|
45
|
+
"""
|
|
46
|
+
Charge a gasless wallet for a SKU (bill payment, gift card, etc.) — sync.
|
|
47
|
+
|
|
48
|
+
Args:
|
|
49
|
+
params: Purchase parameters (skuId, skuReference, amount, wallet, ...)
|
|
50
|
+
bearer_token: Authentication token
|
|
51
|
+
|
|
52
|
+
Returns:
|
|
53
|
+
Transaction record (poll via get_sku_purchase for SUCCESS / FAILED status).
|
|
54
|
+
"""
|
|
55
|
+
response = self.client.post(
|
|
56
|
+
endpoint=API_ENDPOINTS["SKU_PURCHASES"],
|
|
57
|
+
bearer_token=bearer_token,
|
|
58
|
+
body=params.model_dump(by_alias=True),
|
|
59
|
+
)
|
|
60
|
+
return Transaction(**response)
|
|
61
|
+
|
|
62
|
+
async def aget_sku_purchase(
|
|
63
|
+
self, purchase_id: str, bearer_token: str
|
|
64
|
+
) -> Transaction:
|
|
65
|
+
"""
|
|
66
|
+
Get a SKU purchase by id (async). Use for polling settlement status.
|
|
67
|
+
|
|
68
|
+
Args:
|
|
69
|
+
purchase_id: Purchase id from purchase_sku response
|
|
70
|
+
bearer_token: Authentication token
|
|
71
|
+
|
|
72
|
+
Returns:
|
|
73
|
+
Transaction record with current status.
|
|
74
|
+
"""
|
|
75
|
+
response = await self.client.aget(
|
|
76
|
+
endpoint=f"{API_ENDPOINTS['SKU_PURCHASES']}/{purchase_id}",
|
|
77
|
+
bearer_token=bearer_token,
|
|
78
|
+
)
|
|
79
|
+
return Transaction(**response)
|
|
80
|
+
|
|
81
|
+
def get_sku_purchase(
|
|
82
|
+
self, purchase_id: str, bearer_token: str
|
|
83
|
+
) -> Transaction:
|
|
84
|
+
"""
|
|
85
|
+
Get a SKU purchase by id (sync). Use for polling settlement status.
|
|
86
|
+
|
|
87
|
+
Args:
|
|
88
|
+
purchase_id: Purchase id from purchase_sku response
|
|
89
|
+
bearer_token: Authentication token
|
|
90
|
+
|
|
91
|
+
Returns:
|
|
92
|
+
Transaction record with current status.
|
|
93
|
+
"""
|
|
94
|
+
response = self.client.get(
|
|
95
|
+
endpoint=f"{API_ENDPOINTS['SKU_PURCHASES']}/{purchase_id}",
|
|
96
|
+
bearer_token=bearer_token,
|
|
97
|
+
)
|
|
98
|
+
return Transaction(**response)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: chipi-stack
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.1.0
|
|
4
4
|
Summary: Python SDK for Starknet Gasless Transactions via Chipi
|
|
5
5
|
Author-email: Carlos Castillo <carlos@chipipay.com>, Roberto Yamanaka <roberto@chipipay.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -34,17 +34,18 @@ Requires-Dist: black>=24.0.0; extra == "dev"
|
|
|
34
34
|
Requires-Dist: ruff>=0.3.0; extra == "dev"
|
|
35
35
|
Requires-Dist: mypy>=1.8.0; extra == "dev"
|
|
36
36
|
Requires-Dist: build>=1.0.0; extra == "dev"
|
|
37
|
-
Requires-Dist: twine>=5.0.0; extra == "dev"
|
|
38
37
|
Dynamic: license-file
|
|
39
38
|
|
|
40
39
|
# Chipi Python SDK
|
|
41
40
|
|
|
42
|
-
[](https://badge.fury.io/py/chipi-stack)
|
|
43
42
|
[](https://www.python.org/downloads/)
|
|
44
43
|
[](https://opensource.org/licenses/MIT)
|
|
45
44
|
|
|
46
45
|
Python SDK for executing gasless transactions on Starknet via Chipi's paymaster infrastructure.
|
|
47
46
|
|
|
47
|
+
> Published to PyPI as **`chipi-stack`** — matches the `@chipi-stack/*` npm scope. The legacy `chipi-python` package on PyPI is deprecated.
|
|
48
|
+
|
|
48
49
|
## Features
|
|
49
50
|
|
|
50
51
|
- 🚀 **Gasless Transactions** - Execute transactions without paying gas fees
|
|
@@ -57,13 +58,13 @@ Python SDK for executing gasless transactions on Starknet via Chipi's paymaster
|
|
|
57
58
|
## Installation
|
|
58
59
|
|
|
59
60
|
```bash
|
|
60
|
-
pip install chipi-
|
|
61
|
+
pip install chipi-stack
|
|
61
62
|
```
|
|
62
63
|
|
|
63
64
|
Or with uv:
|
|
64
65
|
|
|
65
66
|
```bash
|
|
66
|
-
uv add chipi-
|
|
67
|
+
uv add chipi-stack
|
|
67
68
|
```
|
|
68
69
|
|
|
69
70
|
### Requirements
|
|
@@ -13,6 +13,7 @@ chipi_sdk/formatters.py
|
|
|
13
13
|
chipi_sdk/py.typed
|
|
14
14
|
chipi_sdk/sdk.py
|
|
15
15
|
chipi_sdk/sessions.py
|
|
16
|
+
chipi_sdk/sku_purchases.py
|
|
16
17
|
chipi_sdk/sku_transactions.py
|
|
17
18
|
chipi_sdk/skus.py
|
|
18
19
|
chipi_sdk/transactions.py
|
|
@@ -26,6 +27,7 @@ chipi_sdk/models/__init__.py
|
|
|
26
27
|
chipi_sdk/models/core.py
|
|
27
28
|
chipi_sdk/models/session.py
|
|
28
29
|
chipi_sdk/models/sku.py
|
|
30
|
+
chipi_sdk/models/sku_purchase.py
|
|
29
31
|
chipi_sdk/models/sku_transaction.py
|
|
30
32
|
chipi_sdk/models/transaction.py
|
|
31
33
|
chipi_sdk/models/user.py
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "chipi-stack"
|
|
7
|
-
version = "2.
|
|
7
|
+
version = "2.1.0"
|
|
8
8
|
description = "Python SDK for Starknet Gasless Transactions via Chipi"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -43,7 +43,6 @@ dev = [
|
|
|
43
43
|
"ruff>=0.3.0",
|
|
44
44
|
"mypy>=1.8.0",
|
|
45
45
|
"build>=1.0.0",
|
|
46
|
-
"twine>=5.0.0",
|
|
47
46
|
]
|
|
48
47
|
|
|
49
48
|
[project.urls]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|