diff --git a/tck/methods/account.ts b/tck/methods/account.ts index 20fbdf78c..2d175d3e4 100644 --- a/tck/methods/account.ts +++ b/tck/methods/account.ts @@ -6,6 +6,8 @@ import { AccountDeleteTransaction, Timestamp, AccountAllowanceApproveTransaction, + AccountAllowanceDeleteTransaction, + NftId, TokenId, } from "@hashgraph/sdk"; import Long from "long"; @@ -21,6 +23,7 @@ import { AccountAllowanceApproveParams, CreateAccountParams, DeleteAccountParams, + DeleteAllowanceParams, UpdateAccountParams, } from "../params/account"; import { applyCommonTransactionParams } from "../params/common-tx-params"; @@ -263,3 +266,41 @@ export const approveAllowance = async ({ status: receipt.status.toString(), }; }; + +export const deleteAllowance = async ({ + allowances, + commonTransactionParams, +}: DeleteAllowanceParams): Promise => { + let transaction = new AccountAllowanceDeleteTransaction().setGrpcDeadline( + DEFAULT_GRPC_DEADLINE, + ); + + for (const allowance of allowances) { + const owner = AccountId.fromString(allowance.ownerAccountId); + const tokenId = AccountId.fromString(allowance.tokenId); + + for (const serialNumber of allowance.serialNumbers) { + const nftId = new NftId( + new TokenId(tokenId), + Long.fromString(serialNumber), + ); + + transaction.deleteAllTokenNftAllowances(nftId, owner); + } + } + + if (commonTransactionParams != null) { + applyCommonTransactionParams( + commonTransactionParams, + transaction, + sdk.getClient(), + ); + } + + const txResponse = await transaction.execute(sdk.getClient()); + const receipt = await txResponse.getReceipt(sdk.getClient()); + + return { + status: receipt.status.toString(), + }; +}; diff --git a/tck/params/account.ts b/tck/params/account.ts index 0a0d6ac5c..95b1765a3 100644 --- a/tck/params/account.ts +++ b/tck/params/account.ts @@ -38,3 +38,13 @@ export interface AccountAllowanceApproveParams { readonly allowances: AllowanceParams[]; readonly commonTransactionParams?: Record; } +export interface DeleteAllowanceParams { + readonly allowances: RemoveAllowancesParams[]; + readonly commonTransactionParams?: Record; +} + +export interface RemoveAllowancesParams { + readonly tokenId: string; + readonly ownerAccountId: string; + readonly serialNumbers?: string[]; +}