import { describe, it, expect } from 'vitest' import { TonTransactionBuilder } from './ton-transaction-builder' describe('TonTransactionBuilder', () => { const builder = new TonTransactionBuilder() describe('buildNativeTransfer', () => { it('builds a native transfer request with required fields', () => { const result = builder.buildNativeTransfer({ to: 'UQBxyz', amount: '1000000000', from: 'UQBabc' }) expect(result.messages).toHaveLength(1) expect(result.messages[0].address).toBe('UQBxyz') expect(result.messages[0].amount).toBe('1000000000') expect(result.network).toBe('-239') expect(result.validUntil).toBeGreaterThan(0) }) it('uses senderRawAddress as from when provided', () => { const result = builder.buildNativeTransfer( { to: 'UQBxyz', amount: '500000000', from: 'UQBfriendly' }, '0:abcdef1234567890' ) expect(result.from).toBe('0:abcdef1234567890') }) it('falls back to request.from when senderRawAddress is not provided', () => { const result = builder.buildNativeTransfer({ to: 'UQBxyz', amount: '500000000', from: 'UQBfriendly' }) expect(result.from).toBe('UQBfriendly') }) it('includes payload when provided', () => { const payload = 'dGVzdA==' // base64 for "test" const result = builder.buildNativeTransfer({ to: 'UQBxyz', amount: '1000000000', from: 'UQBabc', payload }) expect(result.messages[0].payload).toBe(payload) }) it('includes stateInit when provided', () => { const stateInit = 'dGVzdA==' const result = builder.buildNativeTransfer({ to: 'UQBxyz', amount: '1000000000', from: 'UQBabc', stateInit }) expect(result.messages[0].stateInit).toBe(stateInit) }) it('includes sendMode when provided', () => { const result = builder.buildNativeTransfer({ to: 'UQBxyz', amount: '1000000000', from: 'UQBabc', sendMode: 128 }) expect(result.sendMode).toBe(128) }) it('omits sendMode when not provided', () => { const result = builder.buildNativeTransfer({ to: 'UQBxyz', amount: '1000000000', from: 'UQBabc' }) expect(result.sendMode).toBeUndefined() }) it('uses custom validUntil when provided', () => { const validUntil = 1700000000 const result = builder.buildNativeTransfer({ to: 'UQBxyz', amount: '1000000000', from: 'UQBabc', validUntil }) expect(result.validUntil).toBe(validUntil) }) }) })