Skip to content

Commit 8a46f83

Browse files
authored
Merge pull request #6086 from BitGo/SC-1729-fix
fix(sdk-coin-sui): walrus request withdraw stake should have empty outputs
2 parents c766bee + 9a33311 commit 8a46f83

File tree

3 files changed

+14
-12
lines changed

3 files changed

+14
-12
lines changed

modules/sdk-coin-sui/src/lib/utils.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,12 @@ export class Utils implements BaseUtils {
367367
});
368368
}
369369

370+
isWalrusRequestWithdrawStakeTx(tx: WalrusWithdrawStakeProgrammableTransaction): boolean {
371+
return tx.transactions
372+
.filter((transaction) => 'kind' in transaction && transaction.kind === 'MoveCall')
373+
.some(({ target }) => target.endsWith('::staking::request_withdraw_stake'));
374+
}
375+
370376
getWalrusWithdrawStakeRequests(tx: WalrusWithdrawStakeProgrammableTransaction): RequestWalrusWithdrawStake {
371377
let amount: number | undefined = undefined;
372378
let stakedWal: SuiObjectRef;

modules/sdk-coin-sui/src/lib/walrusWithdrawStakeTransaction.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,12 @@ export class WalrusWithdrawStakeTransaction extends Transaction<WalrusWithdrawSt
207207
coin: this._coinConfig.name,
208208
},
209209
];
210+
211+
if (utils.isWalrusRequestWithdrawStakeTx(this._suiTransaction.tx)) {
212+
// request withdraw stake should have no outputs
213+
return;
214+
}
215+
210216
this._outputs = [
211217
{
212218
address: this.suiTransaction.sender,

modules/sdk-coin-sui/test/unit/transactionBuilder/walrusWithdrawBuilder.ts

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,7 @@ describe('Walrus Withdraw Builder', () => {
3838
value: testData.STAKING_AMOUNT.toString(),
3939
coin: 'tsui:wal',
4040
});
41-
tx.outputs.length.should.equal(1);
42-
tx.outputs[0].should.deepEqual({
43-
address: testData.sender.address,
44-
value: testData.STAKING_AMOUNT.toString(),
45-
coin: 'tsui:wal',
46-
});
41+
tx.outputs.length.should.equal(0);
4742

4843
const rawTx = tx.toBroadcastFormat();
4944
await assertRebuild(rawTx);
@@ -80,12 +75,7 @@ describe('Walrus Withdraw Builder', () => {
8075
value: AMOUNT_UNKNOWN_TEXT,
8176
coin: 'tsui:wal',
8277
});
83-
tx.outputs.length.should.equal(1);
84-
tx.outputs[0].should.deepEqual({
85-
address: testData.sender.address,
86-
value: AMOUNT_UNKNOWN_TEXT,
87-
coin: 'tsui:wal',
88-
});
78+
tx.outputs.length.should.equal(0);
8979

9080
const rawTx = tx.toBroadcastFormat();
9181
await assertRebuild(rawTx);

0 commit comments

Comments
 (0)