From 306fb70cdffaa7941f1513e8bd30a06e6b9ebd29 Mon Sep 17 00:00:00 2001 From: Shubham Damkondwar Date: Tue, 26 May 2026 00:32:11 +0530 Subject: [PATCH] feat(sdk-coin-starknet): add tokenContractAddress setter to TransferBuilder Allow specifying a custom token contract address rather than using the hardcoded STRK_TOKEN_CONTRACT. Defaults to STRK. TICKET: CECHO-1165 --- modules/sdk-coin-starknet/src/lib/transferBuilder.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/modules/sdk-coin-starknet/src/lib/transferBuilder.ts b/modules/sdk-coin-starknet/src/lib/transferBuilder.ts index f4585805e8..7c09ecb18f 100644 --- a/modules/sdk-coin-starknet/src/lib/transferBuilder.ts +++ b/modules/sdk-coin-starknet/src/lib/transferBuilder.ts @@ -9,6 +9,7 @@ import utils from './utils'; export class TransferBuilder extends TransactionBuilder { protected _receiverAddress?: string; protected _amount?: string; + protected _tokenContractAddress: string = STRK_TOKEN_CONTRACT; constructor(_coinConfig: Readonly) { super(_coinConfig); @@ -35,6 +36,14 @@ export class TransferBuilder extends TransactionBuilder { return this; } + public tokenContractAddress(address: string): this { + if (!address || !utils.isValidAddress(address)) { + throw new BuildTransactionError('Invalid token contract address, got: ' + address); + } + this._tokenContractAddress = address; + return this; + } + /** @inheritdoc */ initBuilder(tx: Transaction): void { super.initBuilder(tx); @@ -43,6 +52,7 @@ export class TransferBuilder extends TransactionBuilder { if (transfer) { this._receiverAddress = transfer.recipient; this._amount = transfer.amount; + this._tokenContractAddress = transfer.tokenContract; } } } @@ -52,7 +62,7 @@ export class TransferBuilder extends TransactionBuilder { this.validateTransfer(); const transferCall: StarknetCall = { - contractAddress: STRK_TOKEN_CONTRACT, + contractAddress: this._tokenContractAddress, entrypoint: 'transfer', calldata: this.compileTransferCalldata(this._receiverAddress as string, this._amount as string), };