|
19 | 19 | from hiero_sdk_python.tokens.token_airdrop_claim import TokenClaimAirdropTransaction |
20 | 20 | from hiero_sdk_python.tokens.token_airdrop_pending_id import PendingAirdropId |
21 | 21 | from hiero_sdk_python.tokens.token_airdrop_transaction import TokenAirdropTransaction |
| 22 | +from hiero_sdk_python.tokens.token_airdrop_transaction_cancel import TokenCancelAirdropTransaction |
22 | 23 | from hiero_sdk_python.tokens.token_associate_transaction import TokenAssociateTransaction |
23 | 24 | from hiero_sdk_python.tokens.token_burn_transaction import TokenBurnTransaction |
24 | 25 | from hiero_sdk_python.tokens.token_create_transaction import TokenCreateTransaction |
|
47 | 48 | AirdropTokenParams, |
48 | 49 | AssociateTokenParams, |
49 | 50 | BurnTokenParams, |
| 51 | + CancelAirdropParams, |
50 | 52 | ClaimTokenParams, |
51 | 53 | CreateTokenParams, |
52 | 54 | DeleteTokenParams, |
|
67 | 69 | AirdropTokenResponse, |
68 | 70 | AssociateTokenResponse, |
69 | 71 | BurnTokenResponse, |
| 72 | + CancelAirdropResponse, |
70 | 73 | ClaimTokenResponse, |
71 | 74 | CreateTokenResponse, |
72 | 75 | CustomFeeResponse, |
@@ -257,6 +260,54 @@ def create_token(params: CreateTokenParams) -> CreateTokenResponse: |
257 | 260 | ) |
258 | 261 |
|
259 | 262 |
|
| 263 | +def _build_cancel_airdrop_transaction(params: CancelAirdropParams) -> TokenCancelAirdropTransaction: |
| 264 | + """Build a TokenCancelAirdropTransaction from TCK params.""" |
| 265 | + transaction = TokenCancelAirdropTransaction().set_grpc_deadline(DEFAULT_GRPC_TIMEOUT) |
| 266 | + |
| 267 | + if params.pendingAirdrops: |
| 268 | + for pending_airdrop in params.pendingAirdrops: |
| 269 | + sender_id = AccountId.from_string(pending_airdrop.senderAccountId) |
| 270 | + receiver_id = AccountId.from_string(pending_airdrop.receiverAccountId) |
| 271 | + token_id = TokenId.from_string(pending_airdrop.tokenId) |
| 272 | + |
| 273 | + if pending_airdrop.serialNumbers: |
| 274 | + for serial_number in pending_airdrop.serialNumbers: |
| 275 | + nft_id = NftId(token_id, int(serial_number)) |
| 276 | + transaction.add_pending_airdrop( |
| 277 | + PendingAirdropId( |
| 278 | + sender_id, |
| 279 | + receiver_id, |
| 280 | + nft_id=nft_id, |
| 281 | + ) |
| 282 | + ) |
| 283 | + else: |
| 284 | + transaction.add_pending_airdrop( |
| 285 | + PendingAirdropId( |
| 286 | + sender_id, |
| 287 | + receiver_id, |
| 288 | + token_id=token_id, |
| 289 | + ) |
| 290 | + ) |
| 291 | + |
| 292 | + return transaction |
| 293 | + |
| 294 | + |
| 295 | +@rpc_method("cancelAirdrop") |
| 296 | +def cancel_airdrop(params: CancelAirdropParams) -> CancelAirdropResponse: |
| 297 | + """Cancel a token airdrop using TCK cancelAirdrop parameters.""" |
| 298 | + client = get_client(params.sessionId) |
| 299 | + |
| 300 | + transaction = _build_cancel_airdrop_transaction(params) |
| 301 | + |
| 302 | + if params.commonTransactionParams is not None: |
| 303 | + params.commonTransactionParams.apply_common_params(transaction, client) |
| 304 | + |
| 305 | + response = transaction.execute(client, wait_for_receipt=False) |
| 306 | + receipt: TransactionReceipt = response.get_receipt(client, validate_status=True) |
| 307 | + |
| 308 | + return CancelAirdropResponse(status=ResponseCode(receipt.status).name) |
| 309 | + |
| 310 | + |
260 | 311 | def _build_mint_token_transaction(params: MintTokenParams) -> TokenMintTransaction: |
261 | 312 | """Build a TokenMintTransaction from TCK params.""" |
262 | 313 | transaction = TokenMintTransaction().set_grpc_deadline(DEFAULT_GRPC_TIMEOUT) |
|
0 commit comments