@layerzerolabs/ton-sdk-tools 3.0.22-ton.0 → 3.0.22-ton.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1454,7 +1454,7 @@ export interface ProtocolFixture {
1454
1454
  controller: SandboxContract<TonContractWrapper>
1455
1455
  endpoint: SandboxContract<TonContractWrapper>
1456
1456
  msglib: SandboxContract<TonContractWrapper>
1457
- msglibManagerDefault: SandboxContract<TonContractWrapper>
1457
+ msglibManager: SandboxContract<TonContractWrapper>
1458
1458
  msglibManagerCustom?: SandboxContract<TonContractWrapper>
1459
1459
  }
1460
1460
 
@@ -1463,7 +1463,7 @@ export interface OAppFixture extends ProtocolFixture {
1463
1463
  oApp: SandboxContract<TonContractWrapper>
1464
1464
  path: Cell
1465
1465
  channel: SandboxContract<TonContractWrapper>
1466
- msglibConnectionDefault: SandboxContract<TonContractWrapper>
1466
+ msglibConnection: SandboxContract<TonContractWrapper>
1467
1467
  msglibConnectionCustom?: SandboxContract<TonContractWrapper>
1468
1468
  }
1469
1469
 
@@ -1494,14 +1494,14 @@ export function logAddresses(
1494
1494
  [\`\${prefix}.multisig.address\`]: formatAddress(fixture.multisig.address),
1495
1495
  [\`\${prefix}.controller.address\`]: formatAddress(fixture.controller.address),
1496
1496
  [\`\${prefix}.endpoint.address\`]: formatAddress(fixture.endpoint.address),
1497
- [\`\${prefix}.MsglibManagerDefault.address\`]: formatAddress(fixture.msglibManagerDefault.address),
1497
+ [\`\${prefix}.msglibManager.address\`]: formatAddress(fixture.msglibManager.address),
1498
1498
  [\`\${prefix}.msglib.address\`]: formatAddress(fixture.msglib.address),
1499
1499
  [\`\${prefix}.smlManagerCustom.address\`]: formatAddress(fixture.msglibManagerCustom?.address ?? ''),
1500
1500
  [\`--- \${oappHeader} ---\`]: '', // Custom separator
1501
1501
  [\`\${prefix}.owner.address\`]: formatAddress(fixture.owner.address),
1502
1502
  [\`\${prefix}.OApp.address\`]: formatAddress(fixture.oApp.address),
1503
1503
  [\`\${prefix}.channel.address\`]: formatAddress(fixture.channel.address),
1504
- [\`\${prefix}.MsglibConnectionDefault.address\`]: formatAddress(fixture.msglibConnectionDefault.address),
1504
+ [\`\${prefix}.msglibConnection.address\`]: formatAddress(fixture.msglibConnection.address),
1505
1505
  [\`\${prefix}.smlConnectionCustom.address\`]: formatAddress(fixture.msglibConnectionCustom?.address ?? ''),
1506
1506
  }
1507
1507
  }
@@ -2717,7 +2717,13 @@ export async function runtimeDecoder(contract: SandboxContract<TonContractWrappe
2717
2717
  if (newCellFieldType === 'NULL') {
2718
2718
  newCellFieldType = 'cl::t::cellRef'
2719
2719
  } else {
2720
- newCellFieldType = keyMap[newCellFieldType] ?? newCellFieldType
2720
+ // Check if newCellFieldType is valid ASCII
2721
+ // eslint-disable-next-line no-control-regex
2722
+ if (!/^[p{ASCII}]+$/u.test(newCellFieldType)) {
2723
+ newCellFieldType = 'cl::t::cellRef'
2724
+ } else {
2725
+ newCellFieldType = keyMap[newCellFieldType] ?? newCellFieldType
2726
+ }
2721
2727
  }
2722
2728
  jsonField.fieldType = newCellFieldType
2723
2729
  tonObjectDefCopy[key] = jsonField
@@ -2768,8 +2774,8 @@ function generateSmlTestUtils(directory, filename) {
2768
2774
  {
2769
2775
  endpoint,
2770
2776
  channel,
2771
- msglibManagerDefault: smlManager,
2772
- msglibConnectionDefault: smlConnection,
2777
+ msglibManager: smlManager,
2778
+ msglibConnection: smlConnection,
2773
2779
  controller,
2774
2780
  }: OAppFixture,
2775
2781
  profile?: Profile
@@ -3029,7 +3035,7 @@ function generateSmlTestUtils(directory, filename) {
3029
3035
  )
3030
3036
 
3031
3037
  // ===================================deploy and configure sml default=====================================
3032
- ;[srcFixture.msglibManagerDefault, srcFixture.msglibConnectionDefault] = await deployConfigAndRegisterSml(
3038
+ ;[srcFixture.msglibManager, srcFixture.msglibConnection] = await deployConfigAndRegisterSml(
3033
3039
  blockchain,
3034
3040
  multiSigners,
3035
3041
  allStorages,
@@ -3047,14 +3053,14 @@ function generateSmlTestUtils(directory, filename) {
3047
3053
  blockchain,
3048
3054
  allStorages,
3049
3055
  multiSigners,
3050
- srcFixture.msglibManagerDefault,
3051
- srcFixture.msglibManagerDefault,
3056
+ srcFixture.msglibManager,
3057
+ srcFixture.msglibManager,
3052
3058
  srcFixture,
3053
3059
  dstFixture
3054
3060
  )
3055
3061
 
3056
3062
  // in SML, the connection is the Msglib
3057
- srcFixture.msglib = srcFixture.msglibConnectionDefault
3063
+ srcFixture.msglib = srcFixture.msglibConnection
3058
3064
 
3059
3065
  await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.controller)
3060
3066
  expect(eventHandler.allFailures.txList).toHaveLength(0)
@@ -3194,7 +3200,9 @@ export interface PricedfeedCacheFixture extends WorkerFixture {
3194
3200
 
3195
3201
  export interface ProtocolFixtureULN extends ProtocolFixture {
3196
3202
  sendDvnFixtures: DvnFixture[]
3203
+ sendDvnFixturesCustom: DvnFixture[]
3197
3204
  receiveDvnFixtures: DvnFixture[]
3205
+ receiveDvnFixturesCustom: DvnFixture[]
3198
3206
  executorFixtures: ExecutorFixture
3199
3207
  priceFeedCacheFixture: PricedfeedCacheFixture
3200
3208
  }
@@ -3237,8 +3245,8 @@ export async function commitVerificationAndExpect(
3237
3245
  endpoint,
3238
3246
  channel,
3239
3247
  msglib: uln,
3240
- msglibManagerDefault: ulnManager,
3241
- msglibConnectionDefault: ulnConnection,
3248
+ msglibManager: ulnManager,
3249
+ msglibConnection: ulnConnection,
3242
3250
  controller,
3243
3251
  }: OAppFixture,
3244
3252
  profile?: Profile
@@ -3326,7 +3334,9 @@ export async function addUlnWorker(
3326
3334
 
3327
3335
  export async function addDvnWorkers(
3328
3336
  allStorages: SandboxContract<TonContractWrapper>,
3329
- { sendDvnFixtures, receiveDvnFixtures, msglibManagerDefault, msglib: uln }: OAppFixtureULN,
3337
+ { msglibManager, msglib: uln }: OAppFixtureULN,
3338
+ sendDvnFixtures: DvnFixture[],
3339
+ receiveDvnFixtures: DvnFixture[],
3330
3340
  dstEid: bigint,
3331
3341
  priceFeedCacheAddress: Address,
3332
3342
  eventHandler: LzEventHandler
@@ -3336,7 +3346,7 @@ export async function addDvnWorkers(
3336
3346
  requireDefined(uln)
3337
3347
  for (const dvnFixture of [...sendDvnFixtures, ...receiveDvnFixtures]) {
3338
3348
  const dvnWorkerCallMd = await allStorages.getNewMdExecuteParams({
3339
- target: addressToBigInt(msglibManagerDefault.address),
3349
+ target: addressToBigInt(msglibManager.address),
3340
3350
  callData: await allStorages.getNewUlnWorkerFeelibInfo({
3341
3351
  workerAddress: addressToBigInt(dvnFixture.dvn.address),
3342
3352
  workerFeelibBytecode: cellFromArtifact(DvnFeelibArtifact),
@@ -3370,12 +3380,12 @@ export async function addDvnWorkers(
3370
3380
  },
3371
3381
  {
3372
3382
  from: dvnFixture.proxy.address,
3373
- to: msglibManagerDefault.address,
3383
+ to: msglibManager.address,
3374
3384
  op: Number(OPCODES.UlnManager_OP_ADD_ULN_WORKER),
3375
3385
  success: true,
3376
3386
  },
3377
3387
  {
3378
- from: msglibManagerDefault.address,
3388
+ from: msglibManager.address,
3379
3389
  to: uln.address,
3380
3390
  success: true,
3381
3391
  op: Number(OPCODES.Uln_OP_UPDATE_WORKER_FEELIB),
@@ -3383,12 +3393,12 @@ export async function addDvnWorkers(
3383
3393
  // emit event Uln::EVENT::ULN_WORKER_REGISTERED
3384
3394
  {
3385
3395
  from: uln.address,
3386
- to: msglibManagerDefault.address,
3396
+ to: msglibManager.address,
3387
3397
  op: Number(OPCODES.BaseInterface_OP_EVENT),
3388
3398
  success: false, // events are supposed to fail
3389
3399
  },
3390
3400
  ])
3391
- await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, msglibManagerDefault)
3401
+ await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, msglibManager)
3392
3402
  }
3393
3403
  }
3394
3404
 
@@ -3420,7 +3430,7 @@ export async function openAndDeployUln(
3420
3430
  TonContractWrapper.create(
3421
3431
  cellFromArtifact(UlnArtifact),
3422
3432
  await allStorages.getNewUln({
3423
- owner: addressToBigInt(srcFixture.msglibManagerDefault.address),
3433
+ owner: addressToBigInt(srcFixture.msglibManager.address),
3424
3434
  eid: srcFixture.eid,
3425
3435
  dstEid: dstFixture.eid,
3426
3436
  })
@@ -3438,17 +3448,17 @@ export async function openAndDeployUln(
3438
3448
  toNano('0')
3439
3449
  ).body!,
3440
3450
  signers: multiSigners,
3441
- targetContract: srcFixture.msglibManagerDefault,
3451
+ targetContract: srcFixture.msglibManager,
3442
3452
  deploy: false,
3443
3453
  expectedTransactions: [
3444
3454
  {
3445
3455
  from: srcFixture.multisig.address,
3446
- to: srcFixture.msglibManagerDefault.address,
3456
+ to: srcFixture.msglibManager.address,
3447
3457
  op: Number(OPCODES.UlnManager_OP_DEPLOY_ULN),
3448
3458
  success: true,
3449
3459
  },
3450
3460
  {
3451
- from: srcFixture.msglibManagerDefault.address,
3461
+ from: srcFixture.msglibManager.address,
3452
3462
  to: uln.address,
3453
3463
  success: true,
3454
3464
  deploy: true,
@@ -3537,7 +3547,7 @@ export async function openAndDeployUlnConnection(
3537
3547
  TonContractWrapper.create(
3538
3548
  cellFromArtifact(UlnConnectionArtifact),
3539
3549
  await allStorages.getNewUlnConnection({
3540
- owner: addressToBigInt(srcFixture.msglibManagerDefault.address),
3550
+ owner: addressToBigInt(srcFixture.msglibManager.address),
3541
3551
  path: srcFixture.path,
3542
3552
  ulnAddress: addressToBigInt(srcFixture.msglib.address),
3543
3553
  })
@@ -3574,7 +3584,7 @@ export async function openAndDeployUlnConnection(
3574
3584
  opCode: OPCODES.OP_DeployConnection,
3575
3585
  md: await allStorages.getNewMdMdAddress({
3576
3586
  md: deployMd,
3577
- address: addressToBigInt(srcFixture.msglibManagerDefault.address),
3587
+ address: addressToBigInt(srcFixture.msglibManager.address),
3578
3588
  }),
3579
3589
  expectedTransactions: [
3580
3590
  {
@@ -3585,12 +3595,12 @@ export async function openAndDeployUlnConnection(
3585
3595
  },
3586
3596
  {
3587
3597
  from: srcFixture.oApp.address,
3588
- to: srcFixture.msglibManagerDefault.address,
3598
+ to: srcFixture.msglibManager.address,
3589
3599
  op: Number(OPCODES.MsglibManager_OP_DEPLOY_CONNECTION),
3590
3600
  success: true,
3591
3601
  },
3592
3602
  {
3593
- from: srcFixture.msglibManagerDefault.address,
3603
+ from: srcFixture.msglibManager.address,
3594
3604
  to: ulnConnection.address,
3595
3605
  op: Number(OPCODES.BaseInterface_OP_INITIALIZE),
3596
3606
  deploy: true,
@@ -3767,17 +3777,17 @@ export async function registerUlnWorkerInfo(
3767
3777
  toNano('0.1')
3768
3778
  ).body!,
3769
3779
  signers: multiSigners,
3770
- targetContract: srcFixture.msglibManagerDefault,
3780
+ targetContract: srcFixture.msglibManager,
3771
3781
  deploy: false,
3772
3782
  expectedTransactions: [
3773
3783
  {
3774
3784
  from: srcFixture.multisig.address,
3775
- to: srcFixture.msglibManagerDefault.address,
3785
+ to: srcFixture.msglibManager.address,
3776
3786
  op: Number(OPCODES.UlnManager_OP_REGISTER_WORKER_FEELIB_BYTECODE),
3777
3787
  success: true,
3778
3788
  },
3779
3789
  {
3780
- from: srcFixture.msglibManagerDefault.address,
3790
+ from: srcFixture.msglibManager.address,
3781
3791
  to: srcFixture.multisig.address,
3782
3792
  },
3783
3793
  ],
@@ -3790,9 +3800,12 @@ export async function deployConfigAndRegisterDvn(
3790
3800
  fixture: OAppFixtureULN,
3791
3801
  eventHandler: LzEventHandler,
3792
3802
  dvnFixtureConfig: DvnFixtureConfig
3793
- ): Promise<void> {
3803
+ ): Promise<[DvnFixture[], DvnFixture[]]> {
3794
3804
  const dvnAdmins = [fixture.owner]
3795
3805
  const verifierSet = generateRandomVerifierSet(3)
3806
+
3807
+ const sendDvnFixtures: DvnFixture[] = []
3808
+ const receiveDvnFixtures: DvnFixture[] = []
3796
3809
 
3797
3810
  for (let i = 0; i < dvnFixtureConfig.src.send.numReqDvns + dvnFixtureConfig.src.send.numOptDvns; i++) {
3798
3811
  const [dvn, dvnProxy, dvnMsgResults] = await openAndDeployDvnAndProxy(
@@ -3804,7 +3817,7 @@ export async function deployConfigAndRegisterDvn(
3804
3817
  BigInt(i)
3805
3818
  )
3806
3819
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
3807
- ;(fixture.sendDvnFixtures = fixture.sendDvnFixtures ?? []).push({
3820
+ sendDvnFixtures.push({
3808
3821
  dvn,
3809
3822
  proxy: dvnProxy,
3810
3823
  admins: dvnAdmins,
@@ -3824,7 +3837,7 @@ export async function deployConfigAndRegisterDvn(
3824
3837
  BigInt(randomNumber + i)
3825
3838
  )
3826
3839
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
3827
- ;(fixture.receiveDvnFixtures = fixture.receiveDvnFixtures ?? []).push({
3840
+ receiveDvnFixtures.push({
3828
3841
  dvn,
3829
3842
  proxy: dvnProxy,
3830
3843
  admins: dvnAdmins,
@@ -3832,6 +3845,8 @@ export async function deployConfigAndRegisterDvn(
3832
3845
  })
3833
3846
  await eventHandler.addCurrentEventsToAllEvents(dvnMsgResults, dvn)
3834
3847
  }
3848
+
3849
+ return [sendDvnFixtures, receiveDvnFixtures]
3835
3850
  }
3836
3851
 
3837
3852
  export async function deployConfigAndRegisterUln(
@@ -3843,7 +3858,8 @@ export async function deployConfigAndRegisterUln(
3843
3858
  version: bigint,
3844
3859
  eventHandler: LzEventHandler,
3845
3860
  dvnFixtureConfig: DvnFixtureConfig
3846
- ): Promise<[SandboxContract<TonContractWrapper>, SandboxContract<TonContractWrapper>]> {
3861
+ ): Promise<SandboxContract<TonContractWrapper>> {
3862
+
3847
3863
  // ===================================open and deploy uln manager =====================================
3848
3864
 
3849
3865
  const [msglibManager, ulnManagerMsgResults] = await openAndDeployUlnManagerViaMultisig(
@@ -3853,12 +3869,18 @@ export async function deployConfigAndRegisterUln(
3853
3869
  srcFixture
3854
3870
  )
3855
3871
  await eventHandler.addCurrentEventsToAllEvents(ulnManagerMsgResults, msglibManager)
3856
- srcFixture.msglibManagerDefault = msglibManager
3872
+ srcFixture.msglibManager = msglibManager
3857
3873
 
3858
3874
  // ===================================open and deploy dvn =====================================
3859
3875
 
3860
- await deployConfigAndRegisterDvn(blockchain, allStorages, srcFixture, eventHandler, dvnFixtureConfig)
3861
-
3876
+ ;[srcFixture.sendDvnFixtures, srcFixture.receiveDvnFixtures] = await deployConfigAndRegisterDvn(
3877
+ blockchain,
3878
+ allStorages,
3879
+ srcFixture,
3880
+ eventHandler,
3881
+ dvnFixtureConfig
3882
+ )
3883
+
3862
3884
  // ===================================open and deploy executor=====================================
3863
3885
 
3864
3886
  const executorAdmins = [srcFixture.owner]
@@ -3901,7 +3923,7 @@ export async function deployConfigAndRegisterUln(
3901
3923
  bytecode: cellFromArtifact(DvnFeelibArtifact),
3902
3924
  })
3903
3925
  )
3904
- await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.msglibManagerDefault)
3926
+ await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.msglibManager)
3905
3927
 
3906
3928
  // ============================registerUlnWorkerInfo - executorFeeLib=======================================
3907
3929
 
@@ -3913,7 +3935,7 @@ export async function deployConfigAndRegisterUln(
3913
3935
  bytecode: cellFromArtifact(ExecutorFeelibArtifact),
3914
3936
  })
3915
3937
  )
3916
- await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.msglibManagerDefault)
3938
+ await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.msglibManager)
3917
3939
 
3918
3940
  // ============================registerUlnWorkerInfo - priceFeeLib(empty bytes)================================
3919
3941
 
@@ -3925,7 +3947,7 @@ export async function deployConfigAndRegisterUln(
3925
3947
  bytecode: emptyObject,
3926
3948
  })
3927
3949
  )
3928
- await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.msglibManagerDefault)
3950
+ await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.msglibManager)
3929
3951
 
3930
3952
  // ===================================open and deploy uln =============================================
3931
3953
 
@@ -3951,12 +3973,20 @@ export async function deployConfigAndRegisterUln(
3951
3973
 
3952
3974
  // ===================================addUlnWorker - dvn =======================================
3953
3975
 
3954
- await addDvnWorkers(allStorages, srcFixture, dstFixture.eid, priceFeedCacheProxy.address, eventHandler)
3955
-
3976
+ await addDvnWorkers(
3977
+ allStorages,
3978
+ srcFixture,
3979
+ srcFixture.sendDvnFixtures,
3980
+ srcFixture.receiveDvnFixtures,
3981
+ dstFixture.eid,
3982
+ priceFeedCacheProxy.address,
3983
+ eventHandler
3984
+ )
3985
+
3956
3986
  // ===================================addUlnWorker - executor =======================================
3957
3987
 
3958
3988
  const executorWorkerCallMd = await allStorages.getNewMdExecuteParams({
3959
- target: addressToBigInt(srcFixture.msglibManagerDefault.address),
3989
+ target: addressToBigInt(srcFixture.msglibManager.address),
3960
3990
  callData: await allStorages.getNewUlnWorkerFeelibInfo({
3961
3991
  workerAddress: addressToBigInt(executor.address),
3962
3992
  workerFeelibBytecode: cellFromArtifact(ExecutorFeelibArtifact),
@@ -3991,12 +4021,12 @@ export async function deployConfigAndRegisterUln(
3991
4021
  },
3992
4022
  {
3993
4023
  from: srcFixture.executorFixtures.proxy.address,
3994
- to: srcFixture.msglibManagerDefault.address,
4024
+ to: srcFixture.msglibManager.address,
3995
4025
  op: Number(OPCODES.UlnManager_OP_ADD_ULN_WORKER),
3996
4026
  success: true,
3997
4027
  },
3998
4028
  {
3999
- from: srcFixture.msglibManagerDefault.address,
4029
+ from: srcFixture.msglibManager.address,
4000
4030
  to: srcFixture.msglib.address,
4001
4031
  success: true,
4002
4032
  op: Number(OPCODES.Uln_OP_UPDATE_WORKER_FEELIB),
@@ -4004,17 +4034,17 @@ export async function deployConfigAndRegisterUln(
4004
4034
  // emit event Uln::EVENT::ULN_WORKER_REGISTERED
4005
4035
  {
4006
4036
  from: srcFixture.msglib.address,
4007
- to: srcFixture.msglibManagerDefault.address,
4037
+ to: srcFixture.msglibManager.address,
4008
4038
  op: Number(OPCODES.BaseInterface_OP_EVENT),
4009
4039
  success: false, // events are supposed to fail
4010
4040
  },
4011
4041
  ])
4012
- await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.msglibManagerDefault)
4042
+ await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.msglibManager)
4013
4043
 
4014
4044
  // ===================================addUlnWorker - priceFeedCache =======================================
4015
4045
 
4016
4046
  const priceFeedCacheWorkerCallMd = await allStorages.getNewMdExecuteParams({
4017
- target: addressToBigInt(srcFixture.msglibManagerDefault.address),
4047
+ target: addressToBigInt(srcFixture.msglibManager.address),
4018
4048
  callData: await allStorages.getNewUlnWorkerFeelibInfo({
4019
4049
  workerAddress: addressToBigInt(priceFeedCacheProxy.address),
4020
4050
  workerFeelibBytecode: emptyObject,
@@ -4056,12 +4086,12 @@ export async function deployConfigAndRegisterUln(
4056
4086
  },
4057
4087
  {
4058
4088
  from: priceFeedCacheProxy.address,
4059
- to: srcFixture.msglibManagerDefault.address,
4089
+ to: srcFixture.msglibManager.address,
4060
4090
  op: Number(OPCODES.UlnManager_OP_ADD_ULN_WORKER),
4061
4091
  success: true,
4062
4092
  },
4063
4093
  {
4064
- from: srcFixture.msglibManagerDefault.address,
4094
+ from: srcFixture.msglibManager.address,
4065
4095
  to: srcFixture.msglib.address,
4066
4096
  success: true,
4067
4097
  op: Number(OPCODES.Uln_OP_UPDATE_WORKER_FEELIB),
@@ -4069,24 +4099,13 @@ export async function deployConfigAndRegisterUln(
4069
4099
  // emit event Uln::EVENT::ULN_WORKER_REGISTERED
4070
4100
  {
4071
4101
  from: srcFixture.msglib.address,
4072
- to: srcFixture.msglibManagerDefault.address,
4102
+ to: srcFixture.msglibManager.address,
4073
4103
  op: Number(OPCODES.BaseInterface_OP_EVENT),
4074
4104
  success: false, // events are supposed to fail
4075
4105
  },
4076
4106
  ]
4077
4107
  )
4078
- await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.msglibManagerDefault)
4079
-
4080
- // ===================================open and deploy uln connection =====================================
4081
-
4082
- const [msglibConnection, ulnConnectionMsgResults] = await openAndDeployUlnConnection(
4083
- blockchain,
4084
- allStorages,
4085
- srcFixture,
4086
- dstFixture
4087
- )
4088
- srcFixture.msglibConnectionDefault = msglibConnection
4089
- await eventHandler.addCurrentEventsToAllEvents(ulnConnectionMsgResults, srcFixture.oApp)
4108
+ await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.msglibManager)
4090
4109
 
4091
4110
  // ===================================configure default send and receive config =====================================
4092
4111
 
@@ -4121,17 +4140,17 @@ export async function deployConfigAndRegisterUln(
4121
4140
  toNano('0.1')
4122
4141
  ).body!,
4123
4142
  signers: multiSigners,
4124
- targetContract: srcFixture.msglibManagerDefault,
4143
+ targetContract: srcFixture.msglibManager,
4125
4144
  deploy: false,
4126
4145
  expectedTransactions: [
4127
4146
  {
4128
4147
  from: srcFixture.multisig.address,
4129
- to: srcFixture.msglibManagerDefault.address,
4148
+ to: srcFixture.msglibManager.address,
4130
4149
  success: true,
4131
4150
  op: Number(OPCODES.UlnManager_OP_SET_DEFAULT_ULN_SEND_CONFIG),
4132
4151
  },
4133
4152
  {
4134
- from: srcFixture.msglibManagerDefault.address,
4153
+ from: srcFixture.msglibManager.address,
4135
4154
  to: srcFixture.msglib.address,
4136
4155
  success: true,
4137
4156
  op: Number(OPCODES.Uln_OP_SET_DEFAULT_ULN_SEND_CONFIG),
@@ -4170,17 +4189,17 @@ export async function deployConfigAndRegisterUln(
4170
4189
  toNano('0.1')
4171
4190
  ).body!,
4172
4191
  signers: multiSigners,
4173
- targetContract: srcFixture.msglibManagerDefault,
4192
+ targetContract: srcFixture.msglibManager,
4174
4193
  deploy: false,
4175
4194
  expectedTransactions: [
4176
4195
  {
4177
4196
  from: srcFixture.multisig.address,
4178
- to: srcFixture.msglibManagerDefault.address,
4197
+ to: srcFixture.msglibManager.address,
4179
4198
  success: true,
4180
4199
  op: Number(OPCODES.UlnManager_OP_SET_DEFAULT_ULN_RECEIVE_CONFIG),
4181
4200
  },
4182
4201
  {
4183
- from: srcFixture.msglibManagerDefault.address,
4202
+ from: srcFixture.msglibManager.address,
4184
4203
  to: srcFixture.msglib.address,
4185
4204
  success: true,
4186
4205
  op: Number(OPCODES.Uln_OP_SET_DEFAULT_ULN_RECEIVE_CONFIG),
@@ -4188,7 +4207,7 @@ export async function deployConfigAndRegisterUln(
4188
4207
  ],
4189
4208
  })
4190
4209
 
4191
- return [msglibManager, msglibConnection]
4210
+ return msglibManager
4192
4211
  }
4193
4212
 
4194
4213
  export async function wireFixtureWithUln(
@@ -4198,14 +4217,42 @@ export async function wireFixtureWithUln(
4198
4217
  srcFixture: OAppFixtureULN,
4199
4218
  dstFixture: OAppFixtureULN,
4200
4219
  eventHandler: LzEventHandler,
4201
- dvnFixtureConfig: DvnFixtureConfig
4220
+ dvnFixtureConfigCustom?: DvnFixtureConfig
4202
4221
  ): Promise<void> {
4203
4222
  // ===================================wire channels=====================================
4204
4223
 
4205
4224
  await wireChannels(blockchain, allStorages, srcFixture, dstFixture, eventHandler)
4206
4225
 
4207
- // ===================================deploy and configure uln default=====================================
4208
- ;[srcFixture.msglibManagerDefault, srcFixture.msglibConnectionDefault] = await deployConfigAndRegisterUln(
4226
+ // ===================================default config =====================================
4227
+
4228
+ const defaultDvnFixtureConfig: DvnFixtureConfig = {
4229
+ src: {
4230
+ send: {
4231
+ numReqDvns: 1n,
4232
+ numOptDvns: 0n,
4233
+ },
4234
+ receive: {
4235
+ numReqDvns: 1n,
4236
+ numOptDvns: 0n,
4237
+ optDvnQuorum: 0n,
4238
+ },
4239
+ },
4240
+ dst: {
4241
+ send: {
4242
+ numReqDvns: 1n,
4243
+ numOptDvns: 0n,
4244
+ },
4245
+ receive: {
4246
+ numReqDvns: 1n,
4247
+ numOptDvns: 0n,
4248
+ optDvnQuorum: 0n,
4249
+ },
4250
+ },
4251
+ }
4252
+
4253
+ // ===================================deploy, configue, and register uln =====================================
4254
+
4255
+ srcFixture.msglibManager = await deployConfigAndRegisterUln(
4209
4256
  blockchain,
4210
4257
  multiSigners,
4211
4258
  allStorages,
@@ -4213,17 +4260,30 @@ export async function wireFixtureWithUln(
4213
4260
  dstFixture,
4214
4261
  ULN_MANAGER_DEFAULT_VERSION,
4215
4262
  eventHandler,
4216
- dvnFixtureConfig
4263
+ defaultDvnFixtureConfig
4217
4264
  )
4218
4265
 
4266
+ // ===================================add msg lib to controller =====================================
4267
+
4219
4268
  let internalMsgResults = await addMsgLibToController(
4220
4269
  blockchain,
4221
4270
  multiSigners,
4222
4271
  srcFixture,
4223
4272
  dstFixture,
4224
- srcFixture.msglibManagerDefault
4273
+ srcFixture.msglibManager
4225
4274
  )
4226
4275
  await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.controller)
4276
+
4277
+ // ===================================open and deploy uln connection =====================================
4278
+
4279
+ const [msglibConnection, ulnConnectionMsgResults] = await openAndDeployUlnConnection(
4280
+ blockchain,
4281
+ allStorages,
4282
+ srcFixture,
4283
+ dstFixture
4284
+ )
4285
+ srcFixture.msglibConnection = msglibConnection
4286
+ await eventHandler.addCurrentEventsToAllEvents(ulnConnectionMsgResults, srcFixture.oApp)
4227
4287
 
4228
4288
  // ===================================set default endpoint config=====================================
4229
4289
 
@@ -4231,8 +4291,8 @@ export async function wireFixtureWithUln(
4231
4291
  blockchain,
4232
4292
  allStorages,
4233
4293
  multiSigners,
4234
- srcFixture.msglibManagerDefault,
4235
- srcFixture.msglibManagerDefault,
4294
+ srcFixture.msglibManager,
4295
+ srcFixture.msglibManager,
4236
4296
  srcFixture,
4237
4297
  dstFixture
4238
4298
  )
@@ -4241,6 +4301,134 @@ export async function wireFixtureWithUln(
4241
4301
 
4242
4302
  // expect no failures
4243
4303
  expect(eventHandler.allFailures.txList).toHaveLength(0)
4304
+
4305
+
4306
+ if (dvnFixtureConfigCustom) {
4307
+ // ===================================open and deploy dvn =====================================
4308
+
4309
+ ;[srcFixture.sendDvnFixturesCustom, srcFixture.receiveDvnFixturesCustom] = await deployConfigAndRegisterDvn(
4310
+ blockchain,
4311
+ allStorages,
4312
+ srcFixture,
4313
+ eventHandler,
4314
+ dvnFixtureConfigCustom
4315
+ )
4316
+
4317
+ // ===================================addUlnWorker - dvn =======================================
4318
+
4319
+ await addDvnWorkers(
4320
+ allStorages,
4321
+ srcFixture,
4322
+ srcFixture.sendDvnFixturesCustom,
4323
+ srcFixture.receiveDvnFixturesCustom,
4324
+ dstFixture.eid,
4325
+ srcFixture.priceFeedCacheFixture.proxy.address,
4326
+ eventHandler
4327
+ )
4328
+
4329
+ const [reqSendDvns, optSendDvns] = getDvnArrayFromDvnFixtures(
4330
+ srcFixture.sendDvnFixturesCustom,
4331
+ dvnFixtureConfigCustom.src.send
4332
+ )
4333
+
4334
+ const ulnSendConfig = await allStorages.getNewUlnSendConfig({
4335
+ workerQuoteGasLimit: BigInt(100000000),
4336
+ maxMessageBytes: BigInt(1000000000),
4337
+ executorNull: BigInt(0),
4338
+ executor: addressToBigInt(srcFixture.executorFixtures.proxy.address),
4339
+ requiredDVNsNull: BigInt(0),
4340
+ requiredDVNs: serializeDvns(reqSendDvns),
4341
+ optionalDVNsNull: BigInt(0),
4342
+ optionalDVNs: serializeDvns(optSendDvns),
4343
+ confirmationsNull: BigInt(0),
4344
+ confirmations: BigInt(1),
4345
+ })
4346
+
4347
+ await sendInternalMessageAndExpect({
4348
+ value: protocolSetupGas['MsgLib.INITIALIZE'],
4349
+ sender: srcFixture.owner.getSender(),
4350
+ contract: srcFixture.oApp,
4351
+ opCode: OPCODES.OP_SetLzConfig,
4352
+ md: await allStorages.getNewLzConfig({
4353
+ path: srcFixture.path,
4354
+ forwardingAddress: addressToBigInt(srcFixture.msglibManager.address),
4355
+ opCode: OPCODES.UlnManager_OP_SET_OAPP_ULN_SEND_CONFIG,
4356
+ config: ulnSendConfig,
4357
+ }),
4358
+ balanceRefill: toNano('1'),
4359
+ expectedTransactions: [
4360
+ {
4361
+ from: srcFixture.owner.address,
4362
+ to: srcFixture.oApp.address,
4363
+ op: Number(OPCODES.OP_SetLzConfig),
4364
+ success: true,
4365
+ },
4366
+ {
4367
+ from: srcFixture.oApp.address,
4368
+ to: srcFixture.msglibManager.address,
4369
+ op: Number(OPCODES.UlnManager_OP_SET_OAPP_ULN_SEND_CONFIG),
4370
+ success: true,
4371
+ },
4372
+ {
4373
+ from: srcFixture.msglibManager.address,
4374
+ to: srcFixture.msglibConnection.address,
4375
+ op: Number(OPCODES.UlnConnection_OP_SET_OAPP_ULN_SEND_CONFIG),
4376
+ success: true,
4377
+ },
4378
+ ],
4379
+ })
4380
+
4381
+ const [reqReceiveDvns, optReceiveDvns, optReceiveQuorum] = getDvnArrayFromDvnFixtures(
4382
+ srcFixture.receiveDvnFixturesCustom,
4383
+ dvnFixtureConfigCustom.src.receive
4384
+ )
4385
+
4386
+ const ulnReceiveConfig = await allStorages.getNewUlnReceiveConfig({
4387
+ minCommitPacketGasNull: BigInt(0),
4388
+ minCommitPacketGas: BigInt(1),
4389
+ confirmationsNull: BigInt(0),
4390
+ confirmations: BigInt(1),
4391
+ requiredDVNsNull: BigInt(0),
4392
+ requiredDVNs: serializeDvns(reqReceiveDvns),
4393
+ optionalDVNsNull: BigInt(0),
4394
+ optionalDVNs: serializeDvns(optReceiveDvns),
4395
+ optionalDVNThreshold: BigInt(optReceiveQuorum),
4396
+ })
4397
+
4398
+ await sendInternalMessageAndExpect({
4399
+ value: protocolSetupGas['MsgLib.INITIALIZE'],
4400
+ sender: srcFixture.owner.getSender(),
4401
+ contract: srcFixture.oApp,
4402
+ opCode: OPCODES.OP_SetLzConfig,
4403
+ md: await allStorages.getNewLzConfig({
4404
+ path: srcFixture.path,
4405
+ forwardingAddress: addressToBigInt(srcFixture.msglibManager.address),
4406
+ opCode: OPCODES.UlnManager_OP_SET_OAPP_ULN_RECEIVE_CONFIG,
4407
+ config: ulnReceiveConfig,
4408
+ }),
4409
+ balanceRefill: toNano('1'),
4410
+ expectedTransactions: [
4411
+ {
4412
+ from: srcFixture.owner.address,
4413
+ to: srcFixture.oApp.address,
4414
+ op: Number(OPCODES.OP_SetLzConfig),
4415
+ success: true,
4416
+ },
4417
+ {
4418
+ from: srcFixture.oApp.address,
4419
+ to: srcFixture.msglibManager.address,
4420
+ op: Number(OPCODES.UlnManager_OP_SET_OAPP_ULN_RECEIVE_CONFIG),
4421
+ success: true,
4422
+ },
4423
+ {
4424
+ from: srcFixture.msglibManager.address,
4425
+ to: srcFixture.msglibConnection.address,
4426
+ op: Number(OPCODES.UlnConnection_OP_SET_OAPP_ULN_RECEIVE_CONFIG),
4427
+ success: true,
4428
+ },
4429
+ ],
4430
+ })
4431
+ }
4244
4432
  }
4245
4433
 
4246
4434
  export async function wireFixturesTogetherWithUln(
@@ -4250,30 +4438,7 @@ export async function wireFixturesTogetherWithUln(
4250
4438
  srcFixture: OAppFixtureULN,
4251
4439
  dstFixture: OAppFixtureULN,
4252
4440
  eventHandler: LzEventHandler,
4253
- defaultDvnFixtureConfig: DvnFixtureConfig = {
4254
- src: {
4255
- send: {
4256
- numReqDvns: 1n,
4257
- numOptDvns: 0n,
4258
- },
4259
- receive: {
4260
- numReqDvns: 1n,
4261
- numOptDvns: 0n,
4262
- optDvnQuorum: 0n,
4263
- },
4264
- },
4265
- dst: {
4266
- send: {
4267
- numReqDvns: 1n,
4268
- numOptDvns: 0n,
4269
- },
4270
- receive: {
4271
- numReqDvns: 1n,
4272
- numOptDvns: 0n,
4273
- optDvnQuorum: 0n,
4274
- },
4275
- },
4276
- }
4441
+ dvnFixtureConfigCustom?: DvnFixtureConfig
4277
4442
  ): Promise<void> {
4278
4443
  await wireFixtureWithUln(
4279
4444
  blockchain,
@@ -4282,7 +4447,7 @@ export async function wireFixturesTogetherWithUln(
4282
4447
  srcFixture,
4283
4448
  dstFixture,
4284
4449
  eventHandler,
4285
- defaultDvnFixtureConfig
4450
+ dvnFixtureConfigCustom
4286
4451
  )
4287
4452
  await wireFixtureWithUln(
4288
4453
  blockchain,
@@ -4291,7 +4456,7 @@ export async function wireFixturesTogetherWithUln(
4291
4456
  dstFixture,
4292
4457
  srcFixture,
4293
4458
  eventHandler,
4294
- defaultDvnFixtureConfig
4459
+ dvnFixtureConfigCustom
4295
4460
  )
4296
4461
  }
4297
4462
 
@@ -4607,7 +4772,10 @@ export async function callVerifyOnDvn({
4607
4772
  export async function ulnVerifyAndExpect(
4608
4773
  allStorages: SandboxContract<TonContractWrapper>,
4609
4774
  mdPacketSent: MdPacketSent,
4610
- { msglib: uln, msglibConnectionDefault, msglibManagerDefault, receiveDvnFixtures }: OAppFixtureULN,
4775
+ { msglib: uln }: OAppFixtureULN,
4776
+ receiveDvnFixtures: DvnFixture[],
4777
+ msglibManager: SandboxContract<TonContractWrapper>,
4778
+ msglibConnection: SandboxContract<TonContractWrapper>,
4611
4779
  eventHandler: LzEventHandler,
4612
4780
  confirmations = 1n
4613
4781
  ): Promise<Cell> {
@@ -4625,7 +4793,7 @@ export async function ulnVerifyAndExpect(
4625
4793
  hash: BigInt('0x' + lzPacket.hash().toString('hex')),
4626
4794
  confirmations,
4627
4795
  }),
4628
- address: addressToBigInt(msglibConnectionDefault.address),
4796
+ address: addressToBigInt(msglibConnection.address),
4629
4797
  }),
4630
4798
  expiration: oneDayFromNow,
4631
4799
  opcode: OPCODES.Uln_OP_ULN_VERIFY,
@@ -4662,19 +4830,19 @@ export async function ulnVerifyAndExpect(
4662
4830
  },
4663
4831
  {
4664
4832
  from: uln.address,
4665
- to: msglibConnectionDefault.address,
4833
+ to: msglibConnection.address,
4666
4834
  op: Number(OPCODES.UlnConnection_OP_ULN_CONNECTION_VERIFY),
4667
4835
  success: true,
4668
4836
  },
4669
4837
  // emit UlnConnection::EVENT::PACKET_VERIFIED
4670
4838
  {
4671
- from: msglibConnectionDefault.address,
4672
- to: msglibManagerDefault.address,
4839
+ from: msglibConnection.address,
4840
+ to: msglibManager.address,
4673
4841
  op: Number(OPCODES.BaseInterface_OP_EVENT),
4674
4842
  success: false, // events are supposed to fail
4675
4843
  },
4676
4844
  {
4677
- from: msglibConnectionDefault.address,
4845
+ from: msglibConnection.address,
4678
4846
  to: proxy.address,
4679
4847
  op: Number(OPCODES.UltraLightNode_OP_ULN_CONNECTION_VERIFY_CALLBACK),
4680
4848
  success: true,