Skip to content

Commit 99fd613

Browse files
committed
Added embedded transaction builders
1 parent 7f19820 commit 99fd613

13 files changed

+192
-25
lines changed

src/model/transaction/AccountAddressRestrictionTransaction.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {VerifiableTransaction} from '../../infrastructure/builders/VerifiableTra
2020
import { AccountAddressRestrictionModificationBuilder } from '../../infrastructure/catbuffer/AccountAddressRestrictionModificationBuilder';
2121
import { AccountAddressRestrictionTransactionBuilder } from '../../infrastructure/catbuffer/AccountAddressRestrictionTransactionBuilder';
2222
import { AmountDto } from '../../infrastructure/catbuffer/AmountDto';
23+
import { EmbeddedAccountAddressRestrictionTransactionBuilder } from '../../infrastructure/catbuffer/EmbeddedAccountAddressRestrictionTransactionBuilder';
2324
import { EntityTypeDto } from '../../infrastructure/catbuffer/EntityTypeDto';
2425
import { KeyDto } from '../../infrastructure/catbuffer/KeyDto';
2526
import { SignatureDto } from '../../infrastructure/catbuffer/SignatureDto';
@@ -144,4 +145,26 @@ export class AccountAddressRestrictionTransaction extends Transaction {
144145
);
145146
return transactionBuilder.serialize();
146147
}
148+
149+
/**
150+
* @internal
151+
* @returns {Uint8Array}
152+
*/
153+
protected generateEmbeddedBytes(): Uint8Array {
154+
const signerBuffer = new Uint8Array(32);
155+
156+
const transactionBuilder = new EmbeddedAccountAddressRestrictionTransactionBuilder(
157+
new KeyDto(signerBuffer),
158+
this.versionToDTO(),
159+
TransactionType.ACCOUNT_RESTRICTION_ADDRESS.valueOf(),
160+
this.restrictionType.valueOf(),
161+
this.modifications.map((modification) => {
162+
return new AccountAddressRestrictionModificationBuilder(
163+
modification.modificationType.valueOf(),
164+
new UnresolvedAddressDto(RawAddress.stringToAddress(modification.value)),
165+
);
166+
}),
167+
);
168+
return transactionBuilder.serialize();
169+
}
147170
}

src/model/transaction/AccountMosaicRestrictionTransaction.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {VerifiableTransaction} from '../../infrastructure/builders/VerifiableTra
1919
import { AccountMosaicRestrictionModificationBuilder } from '../../infrastructure/catbuffer/AccountMosaicRestrictionModificationBuilder';
2020
import { AccountMosaicRestrictionTransactionBuilder } from '../../infrastructure/catbuffer/AccountMosaicRestrictionTransactionBuilder';
2121
import { AmountDto } from '../../infrastructure/catbuffer/AmountDto';
22+
import { EmbeddedAccountMosaicRestrictionTransactionBuilder } from '../../infrastructure/catbuffer/EmbeddedAccountMosaicRestrictionTransactionBuilder';
2223
import { EntityTypeDto } from '../../infrastructure/catbuffer/EntityTypeDto';
2324
import { KeyDto } from '../../infrastructure/catbuffer/KeyDto';
2425
import { SignatureDto } from '../../infrastructure/catbuffer/SignatureDto';
@@ -143,4 +144,26 @@ export class AccountMosaicRestrictionTransaction extends Transaction {
143144
);
144145
return transactionBuilder.serialize();
145146
}
147+
148+
/**
149+
* @internal
150+
* @returns {Uint8Array}
151+
*/
152+
protected generateEmbeddedBytes(): Uint8Array {
153+
const signerBuffer = new Uint8Array(32);
154+
155+
const transactionBuilder = new EmbeddedAccountMosaicRestrictionTransactionBuilder(
156+
new KeyDto(signerBuffer),
157+
this.versionToDTO(),
158+
TransactionType.ACCOUNT_RESTRICTION_MOSAIC.valueOf(),
159+
this.restrictionType.valueOf(),
160+
this.modifications.map((modification) => {
161+
return new AccountMosaicRestrictionModificationBuilder(
162+
modification.modificationType.valueOf(),
163+
new UnresolvedMosaicIdDto(modification.value),
164+
);
165+
}),
166+
);
167+
return transactionBuilder.serialize();
168+
}
146169
}

src/model/transaction/AccountOperationRestrictionTransaction.ts

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,13 @@
1616

1717
import { Builder } from '../../infrastructure/builders/AccountRestrictionsEntityTypeTransaction';
1818
import {VerifiableTransaction} from '../../infrastructure/builders/VerifiableTransaction';
19+
import { AccountOperationRestrictionModificationBuilder } from '../../infrastructure/catbuffer/AccountOperationRestrictionModificationBuilder';
20+
import { AccountOperationRestrictionTransactionBuilder } from '../../infrastructure/catbuffer/AccountOperationRestrictionTransactionBuilder';
21+
import { AmountDto } from '../../infrastructure/catbuffer/AmountDto';
22+
import { EmbeddedAccountOperationRestrictionTransactionBuilder } from '../../infrastructure/catbuffer/EmbeddedAccountOperationRestrictionTransactionBuilder';
23+
import { KeyDto } from '../../infrastructure/catbuffer/KeyDto';
24+
import { SignatureDto } from '../../infrastructure/catbuffer/SignatureDto';
25+
import { TimestampDto } from '../../infrastructure/catbuffer/TimestampDto';
1926
import { PublicAccount } from '../account/PublicAccount';
2027
import { RestrictionType } from '../account/RestrictionType';
2128
import { NetworkType } from '../blockchain/NetworkType';
@@ -26,13 +33,6 @@ import { Transaction } from './Transaction';
2633
import { TransactionInfo } from './TransactionInfo';
2734
import { TransactionType } from './TransactionType';
2835
import { TransactionVersion } from './TransactionVersion';
29-
import { AccountOperationRestrictionModificationBuilder } from '../../infrastructure/catbuffer/AccountOperationRestrictionModificationBuilder';
30-
import { AccountOperationRestrictionTransactionBuilder } from '../../infrastructure/catbuffer/AccountOperationRestrictionTransactionBuilder';
31-
import { SignatureDto } from '../../infrastructure/catbuffer/SignatureDto';
32-
import { KeyDto } from '../../infrastructure/catbuffer/KeyDto';
33-
import { EntityTypeDto } from '../../infrastructure/catbuffer/EntityTypeDto';
34-
import { AmountDto } from '../../infrastructure/catbuffer/AmountDto';
35-
import { TimestampDto } from '../../infrastructure/catbuffer/TimestampDto';
3636

3737
export class AccountOperationRestrictionTransaction extends Transaction {
3838

@@ -142,4 +142,26 @@ export class AccountOperationRestrictionTransaction extends Transaction {
142142
);
143143
return transactionBuilder.serialize();
144144
}
145+
146+
/**
147+
* @internal
148+
* @returns {Uint8Array}
149+
*/
150+
protected generateEmbeddedBytes(): Uint8Array {
151+
const signerBuffer = new Uint8Array(32);
152+
153+
const transactionBuilder = new EmbeddedAccountOperationRestrictionTransactionBuilder(
154+
new KeyDto(signerBuffer),
155+
this.versionToDTO(),
156+
TransactionType.ACCOUNT_RESTRICTION_OPERATION.valueOf(),
157+
this.restrictionType.valueOf(),
158+
this.modifications.map((modification) => {
159+
return new AccountOperationRestrictionModificationBuilder(
160+
modification.modificationType.valueOf(),
161+
modification.value.valueOf(),
162+
);
163+
}),
164+
);
165+
return transactionBuilder.serialize();
166+
}
145167
}

src/model/transaction/AddressAliasTransaction.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ import { Transaction } from './Transaction';
3636
import { TransactionInfo } from './TransactionInfo';
3737
import { TransactionType } from './TransactionType';
3838
import { TransactionVersion } from './TransactionVersion';
39-
import { RawAddress } from '../../core/format';
4039

4140
/**
4241
* In case a mosaic has the flag 'supplyMutable' set to true, the creator of the mosaic can change the supply,
@@ -184,4 +183,22 @@ export class AddressAliasTransaction extends Transaction {
184183
);
185184
return transactionBuilder.serialize();
186185
}
186+
187+
/**
188+
* @internal
189+
* @returns {Uint8Array}
190+
*/
191+
protected generateEmbeddedBytes(): Uint8Array {
192+
const signerBuffer = new Uint8Array(32);
193+
194+
const transactionBuilder = new EmbeddedAddressAliasTransactionBuilder(
195+
new KeyDto(signerBuffer),
196+
this.versionToDTO(),
197+
TransactionType.ADDRESS_ALIAS.valueOf(),
198+
this.actionType.valueOf(),
199+
new NamespaceIdDto(this.namespaceId.id.toDTO()),
200+
new AddressDto(RawAddress.stringToAddress(this.address.plain())),
201+
);
202+
return transactionBuilder.serialize();
203+
}
187204
}

src/model/transaction/AggregateTransaction.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,4 +334,12 @@ export class AggregateTransaction extends Transaction {
334334
protected generateEmbeddedBytes(): Uint8Array {
335335
throw new Error('Method not implemented');
336336
}
337+
338+
/**
339+
* @internal
340+
* @returns {Uint8Array}
341+
*/
342+
protected generateEmbeddedBytes(): Uint8Array {
343+
throw new Error('Not implemented');
344+
}
337345
}

src/model/transaction/ModifyMultisigAccountTransaction.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import { Transaction } from './Transaction';
3333
import { TransactionInfo } from './TransactionInfo';
3434
import { TransactionType } from './TransactionType';
3535
import { TransactionVersion } from './TransactionVersion';
36+
import { EmbeddedMultisigAccountModificationTransactionBuilder } from '../../infrastructure/catbuffer/EmbeddedMultisigAccountModificationTransactionBuilder';
3637

3738
/**
3839
* Modify multisig account transactions are part of the NEM's multisig account system.
@@ -206,4 +207,27 @@ export class ModifyMultisigAccountTransaction extends Transaction {
206207
);
207208
return transactionBuilder.serialize();
208209
}
210+
211+
/**
212+
* @internal
213+
* @returns {Uint8Array}
214+
*/
215+
protected generateEmbeddedBytes(): Uint8Array {
216+
const signerBuffer = new Uint8Array(32);
217+
218+
const transactionBuilder = new EmbeddedMultisigAccountModificationTransactionBuilder(
219+
new KeyDto(signerBuffer),
220+
this.versionToDTO(),
221+
TransactionType.MODIFY_MULTISIG_ACCOUNT.valueOf(),
222+
this.minRemovalDelta,
223+
this.minApprovalDelta,
224+
this.modifications.map((modification) => {
225+
return new CosignatoryModificationBuilder(
226+
modification.type.valueOf(),
227+
new KeyDto(Convert.hexToUint8(modification.cosignatoryPublicAccount.publicKey)),
228+
);
229+
}),
230+
);
231+
return transactionBuilder.serialize();
232+
}
209233
}

src/model/transaction/MosaicAliasTransaction.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,4 +179,22 @@ export class MosaicAliasTransaction extends Transaction {
179179
);
180180
return transactionBuilder.serialize();
181181
}
182+
183+
/**
184+
* @internal
185+
* @returns {Uint8Array}
186+
*/
187+
protected generateEmbeddedBytes(): Uint8Array {
188+
const signerBuffer = new Uint8Array(32);
189+
190+
const transactionBuilder = new EmbeddedMosaicAliasTransactionBuilder(
191+
new KeyDto(signerBuffer),
192+
this.versionToDTO(),
193+
TransactionType.MOSAIC_ALIAS.valueOf(),
194+
this.actionType.valueOf(),
195+
new NamespaceIdDto(this.namespaceId.id.toDTO()),
196+
new MosaicIdDto(this.mosaicId.id.toDTO()),
197+
);
198+
return transactionBuilder.serialize();
199+
}
182200
}

src/model/transaction/MosaicDefinitionTransaction.ts

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -39,19 +39,6 @@ import { Transaction } from './Transaction';
3939
import { TransactionInfo } from './TransactionInfo';
4040
import { TransactionType } from './TransactionType';
4141
import { TransactionVersion } from './TransactionVersion';
42-
import { MosaicDefinitionTransactionBuilder } from '../../infrastructure/catbuffer/MosaicDefinitionTransactionBuilder';
43-
import { SignatureDto } from '../../infrastructure/catbuffer/SignatureDto';
44-
import { KeyDto } from '../../infrastructure/catbuffer/KeyDto';
45-
import { EntityTypeDto } from '../../infrastructure/catbuffer/EntityTypeDto';
46-
import { AmountDto } from '../../infrastructure/catbuffer/AmountDto';
47-
import { TimestampDto } from '../../infrastructure/catbuffer/TimestampDto';
48-
import { MosaicNonceDto } from '../../infrastructure/catbuffer/MosaicNonceDto';
49-
import { MosaicIdDto } from '../../infrastructure/catbuffer/MosaicIdDto';
50-
import { MosaicFlagsDto } from '../../infrastructure/catbuffer/MosaicFlagsDto';
51-
import { MosaicFlags } from '../mosaic/MosaicFlag';
52-
import { BlockDurationDto } from '../../infrastructure/catbuffer/BlockDurationDto';
53-
import { Convert } from '../../core/format';
54-
import { GeneratorUtils } from '../../infrastructure/catbuffer/GeneratorUtils';
5542

5643
/**
5744
* Before a mosaic can be created or transferred, a corresponding definition of the mosaic has to be created and published to the network.
@@ -246,4 +233,25 @@ export class MosaicDefinitionTransaction extends Transaction {
246233
);
247234
return transactionBuilder.serialize();
248235
}
236+
237+
/**
238+
* @internal
239+
* @returns {Uint8Array}
240+
*/
241+
protected generateEmbeddedBytes(): Uint8Array {
242+
const signerBuffer = new Uint8Array(32);
243+
244+
const transactionBuilder = new EmbeddedMosaicDefinitionTransactionBuilder(
245+
new KeyDto(signerBuffer),
246+
this.versionToDTO(),
247+
TransactionType.MOSAIC_DEFINITION.valueOf(),
248+
new MosaicNonceDto(this.getMosaicNonceIntValue()),
249+
new MosaicIdDto(this.mosaicId.id.toDTO()),
250+
this.getMosaicFlagValue(),
251+
this.mosaicProperties.divisibility,
252+
new BlockDurationDto(this.mosaicProperties.duration ?
253+
this.mosaicProperties.duration.toDTO() : []),
254+
);
255+
return transactionBuilder.serialize();
256+
}
249257
}

src/model/transaction/TransferTransaction.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,4 +263,24 @@ export class TransferTransaction extends Transaction {
263263
);
264264
return transactionBuilder.serialize();
265265
}
266+
267+
/**
268+
* @internal
269+
* @returns {Uint8Array}
270+
*/
271+
protected generateEmbeddedBytes(): Uint8Array {
272+
const signerBuffer = new Uint8Array(32);
273+
const transactionBuilder = new EmbeddedTransferTransactionBuilder(
274+
new KeyDto(signerBuffer),
275+
this.versionToDTO(),
276+
TransactionType.TRANSFER.valueOf(),
277+
new UnresolvedAddressDto(RawAddress.stringToAddress(this.recipientToString())),
278+
this.getMessageBuffer(),
279+
this.sortMosaics().map((mosaic) => {
280+
return new UnresolvedMosaicBuilder(new UnresolvedMosaicIdDto(mosaic.id.id.toDTO()),
281+
new AmountDto(mosaic.amount.toDTO()));
282+
}),
283+
);
284+
return transactionBuilder.serialize();
285+
}
266286
}

test/model/transaction/MosaicAddressRestrictionTransaction.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ describe('MosaicAddressRestrictionTransaction', () => {
4747
expect(mosaicAddressRestrictionTransaction.newRestrictionValue.toHex()).to.be.equal(UInt64.fromUint(8).toHex());
4848
expect(mosaicAddressRestrictionTransaction.targetAddress.plain()).to.be.equal(account.address.plain());
4949

50-
const signedTransaction = mosaicAddressRestrictionTransaction.signWith(account, generationHash);
50+
const signedTransaction = mosaicAddressRestrictionTransaction.signWithCatbuffer(account, generationHash);
5151

5252
expect(signedTransaction.payload.substring(
5353
240,

0 commit comments

Comments
 (0)