Skip to content

Commit 781138e

Browse files
committed
feat: Add RejctToken to TCK
Signed-off-by: aceppaluni <aceppaluni@gmail.com>
1 parent 07be7f6 commit 781138e

3 files changed

Lines changed: 72 additions & 0 deletions

File tree

tck/handlers/token.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from hiero_sdk_python.tokens.token_id import TokenId
2424
from hiero_sdk_python.tokens.token_mint_transaction import TokenMintTransaction
2525
from hiero_sdk_python.tokens.token_pause_transaction import TokenPauseTransaction
26+
from hiero_sdk_python.tokens.token_reject_transaction import TokenRejectTransaction
2627
from hiero_sdk_python.tokens.token_type import TokenType
2728
from hiero_sdk_python.transaction.transaction_receipt import TransactionReceipt
2829
from tck.handlers.registry import rpc_method
@@ -36,6 +37,7 @@
3637
FreezeTokenParams,
3738
MintTokenParams,
3839
PauseTokenParams,
40+
RejectTokenParams,
3941
)
4042
from tck.response.token import (
4143
AirdropTokenResponse,
@@ -46,6 +48,7 @@
4648
FreezeTokenResponse,
4749
MintTokenResponse,
4850
PauseTokenResponse,
51+
RejectTokenResponse,
4952
)
5053
from tck.util.client_utils import get_client
5154
from tck.util.constants import DEFAULT_GRPC_TIMEOUT
@@ -478,3 +481,37 @@ def claim_token(params: ClaimTokenParams) -> ClaimTokenResponse:
478481
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
479482

480483
return ClaimTokenResponse(status=ResponseCode(receipt.status).name)
484+
485+
486+
def _build_reject_token_transaction(
487+
params: RejectTokenParams,
488+
) -> TokenRejectTransaction:
489+
transaction = TokenRejectTransaction().set_grpc_deadline(DEFAULT_GRPC_TIMEOUT)
490+
491+
if params.ownerId:
492+
transaction.set_owner_id(AccountId.from_string(params.ownerId))
493+
494+
if params.tokenIds:
495+
transaction.set_token_ids([TokenId.from_string(token) for token in params.tokenIds])
496+
497+
if params.serialNumbers:
498+
transaction.set_nft_ids([NftId.from_string(serial) for serial in params.serialNumbers])
499+
500+
return transaction
501+
502+
503+
@rpc_method("rejectToken")
504+
def reject_token(params: RejectTokenParams) -> RejectTokenResponse:
505+
client = get_client(params.sessionId)
506+
507+
transaction = _build_reject_token_transaction(params)
508+
509+
if params.commonTransactionParams is not None:
510+
params.commonTransactionParams.apply_common_params(transaction, params.commonTransactionParams)
511+
512+
response = transaction.execute(client, wait_for_receipt=False)
513+
receipt = response.get_receipt(client, validate_status=True)
514+
515+
return RejectTokenResponse(
516+
status=ResponseCode(receipt.status).name,
517+
)

tck/param/token.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,3 +232,33 @@ def parse_json_params(cls, params: dict) -> ClaimTokenParams:
232232
sessionId=parse_session_id(params),
233233
commonTransactionParams=parse_common_transaction_params(params),
234234
)
235+
236+
237+
@dataclass
238+
class RejectTokenParams(BaseTransactionParams):
239+
ownerId: str | None = None
240+
tokenIds: list[str] | None = None
241+
serialNumbers: list[str] | None = None
242+
243+
@classmethod
244+
def parse_json_params(cls, params: dict) -> RejectTokenParams:
245+
token_ids = params.get("tokenIds")
246+
if token_ids is not None and (
247+
not isinstance(token_ids, list) or not all(isinstance(token_id, str) for token_id in token_ids)
248+
):
249+
raise ValueError("tokenIds must be a list of strings")
250+
251+
serial_numbers = params.get("serialNumbers")
252+
if serial_numbers is not None and (
253+
not isinstance(serial_numbers, list)
254+
or not all(isinstance(serial_number, str) for serial_number in serial_numbers)
255+
):
256+
raise ValueError("serialNumbers must be a list of strings")
257+
258+
return cls(
259+
ownerId=params.get("ownerId"),
260+
tokenIds=token_ids,
261+
serialNumbers=serial_numbers,
262+
sessionId=parse_session_id(params),
263+
commonTransactionParams=parse_common_transaction_params(params),
264+
)

tck/response/token.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ class DeleteTokenResponse(StatusOnlyResponse):
3434
"""Response payload for deleteToken."""
3535

3636

37+
@dataclass
38+
class RejectTokenResponse(StatusOnlyResponse):
39+
"""Response payload for rejectToken."""
40+
41+
3742
@dataclass
3843
class FreezeTokenResponse(StatusOnlyResponse):
3944
"""Response payload for freezeToken."""

0 commit comments

Comments
 (0)