Skip to content

Commit 69eec2a

Browse files
authored
feat: Adds RejctToken in TCK (#2442)
Signed-off-by: aceppaluni <aceppaluni@gmail.com>
1 parent 8b49e3f commit 69eec2a

3 files changed

Lines changed: 79 additions & 0 deletions

File tree

tck/handlers/token.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
from hiero_sdk_python.tokens.token_mint_transaction import TokenMintTransaction
3232
from hiero_sdk_python.tokens.token_pause_status import TokenPauseStatus
3333
from hiero_sdk_python.tokens.token_pause_transaction import TokenPauseTransaction
34+
from hiero_sdk_python.tokens.token_reject_transaction import TokenRejectTransaction
3435
from hiero_sdk_python.tokens.token_revoke_kyc_transaction import TokenRevokeKycTransaction
3536
from hiero_sdk_python.tokens.token_type import TokenType
3637
from hiero_sdk_python.transaction.transaction_receipt import TransactionReceipt
@@ -48,6 +49,7 @@
4849
GrantTokenKycParams,
4950
MintTokenParams,
5051
PauseTokenParams,
52+
RejectTokenParams,
5153
RevokeTokenKycParams,
5254
)
5355
from tck.response.token import (
@@ -63,6 +65,7 @@
6365
GrantTokenKycResponse,
6466
MintTokenResponse,
6567
PauseTokenResponse,
68+
RejectTokenResponse,
6669
RevokeTokenKycResponse,
6770
)
6871
from tck.util.client_utils import get_client
@@ -732,3 +735,44 @@ def get_token_info(params: GetTokenInfoParams) -> GetTokenInfoResponse:
732735

733736
info = query.execute(client)
734737
return _build_token_info_response(info)
738+
739+
740+
def _build_reject_token_transaction(
741+
params: RejectTokenParams,
742+
) -> TokenRejectTransaction:
743+
transaction = TokenRejectTransaction().set_grpc_deadline(DEFAULT_GRPC_TIMEOUT)
744+
745+
if params.ownerId is not None:
746+
transaction.set_owner_id(AccountId.from_string(params.ownerId))
747+
748+
if params.serialNumbers is not None and params.tokenIds is not None:
749+
nft_ids = []
750+
751+
for token_id in params.tokenIds:
752+
nft_ids.extend(
753+
NftId(TokenId.from_string(token_id), int(serial_number)) for serial_number in params.serialNumbers
754+
)
755+
756+
transaction.set_nft_ids(nft_ids)
757+
758+
elif params.tokenIds is not None:
759+
transaction.set_token_ids([TokenId.from_string(token) for token in params.tokenIds])
760+
761+
return transaction
762+
763+
764+
@rpc_method("rejectToken")
765+
def reject_token(params: RejectTokenParams) -> RejectTokenResponse:
766+
client = get_client(params.sessionId)
767+
768+
transaction = _build_reject_token_transaction(params)
769+
770+
if params.commonTransactionParams is not None:
771+
params.commonTransactionParams.apply_common_params(transaction, client)
772+
773+
response = transaction.execute(client, wait_for_receipt=False)
774+
receipt = response.get_receipt(client, validate_status=True)
775+
776+
return RejectTokenResponse(
777+
status=ResponseCode(receipt.status).name,
778+
)

tck/param/token.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,3 +311,33 @@ def parse_json_params(cls, params: dict) -> GetTokenInfoParams:
311311
maxQueryPayment=params.get("maxQueryPayment"),
312312
sessionId=parse_session_id(params),
313313
)
314+
315+
316+
@dataclass
317+
class RejectTokenParams(BaseTransactionParams):
318+
ownerId: str | None = None
319+
tokenIds: list[str] | None = None
320+
serialNumbers: list[str] | None = None
321+
322+
@classmethod
323+
def parse_json_params(cls, params: dict) -> RejectTokenParams:
324+
token_ids = params.get("tokenIds")
325+
if token_ids is not None and (
326+
not isinstance(token_ids, list) or not all(isinstance(token_id, str) for token_id in token_ids)
327+
):
328+
raise ValueError("tokenIds must be a list of strings")
329+
330+
serial_numbers = params.get("serialNumbers")
331+
if serial_numbers is not None and (
332+
not isinstance(serial_numbers, list)
333+
or not all(isinstance(serial_number, str) for serial_number in serial_numbers)
334+
):
335+
raise ValueError("serialNumbers must be a list of strings")
336+
337+
return cls(
338+
ownerId=params.get("ownerId"),
339+
tokenIds=token_ids,
340+
serialNumbers=serial_numbers,
341+
sessionId=parse_session_id(params),
342+
commonTransactionParams=parse_common_transaction_params(params),
343+
)

tck/response/token.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ class RevokeTokenKycResponse(StatusOnlyResponse):
5454
"""Response payload for revokeTokenKyc."""
5555

5656

57+
@dataclass
58+
class RejectTokenResponse(StatusOnlyResponse):
59+
"""Response payload for rejectToken."""
60+
61+
5762
@dataclass
5863
class PauseTokenResponse(StatusOnlyResponse):
5964
"""Response payload for pauseToken."""

0 commit comments

Comments
 (0)