@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.cjs CHANGED
@@ -1476,7 +1476,7 @@ export interface ProtocolFixture {
1476
1476
  controller: SandboxContract<TonContractWrapper>
1477
1477
  endpoint: SandboxContract<TonContractWrapper>
1478
1478
  msglib: SandboxContract<TonContractWrapper>
1479
- msglibManagerDefault: SandboxContract<TonContractWrapper>
1479
+ msglibManager: SandboxContract<TonContractWrapper>
1480
1480
  msglibManagerCustom?: SandboxContract<TonContractWrapper>
1481
1481
  }
1482
1482
 
@@ -1485,7 +1485,7 @@ export interface OAppFixture extends ProtocolFixture {
1485
1485
  oApp: SandboxContract<TonContractWrapper>
1486
1486
  path: Cell
1487
1487
  channel: SandboxContract<TonContractWrapper>
1488
- msglibConnectionDefault: SandboxContract<TonContractWrapper>
1488
+ msglibConnection: SandboxContract<TonContractWrapper>
1489
1489
  msglibConnectionCustom?: SandboxContract<TonContractWrapper>
1490
1490
  }
1491
1491
 
@@ -1516,14 +1516,14 @@ export function logAddresses(
1516
1516
  [\`\${prefix}.multisig.address\`]: formatAddress(fixture.multisig.address),
1517
1517
  [\`\${prefix}.controller.address\`]: formatAddress(fixture.controller.address),
1518
1518
  [\`\${prefix}.endpoint.address\`]: formatAddress(fixture.endpoint.address),
1519
- [\`\${prefix}.MsglibManagerDefault.address\`]: formatAddress(fixture.msglibManagerDefault.address),
1519
+ [\`\${prefix}.msglibManager.address\`]: formatAddress(fixture.msglibManager.address),
1520
1520
  [\`\${prefix}.msglib.address\`]: formatAddress(fixture.msglib.address),
1521
1521
  [\`\${prefix}.smlManagerCustom.address\`]: formatAddress(fixture.msglibManagerCustom?.address ?? ''),
1522
1522
  [\`--- \${oappHeader} ---\`]: '', // Custom separator
1523
1523
  [\`\${prefix}.owner.address\`]: formatAddress(fixture.owner.address),
1524
1524
  [\`\${prefix}.OApp.address\`]: formatAddress(fixture.oApp.address),
1525
1525
  [\`\${prefix}.channel.address\`]: formatAddress(fixture.channel.address),
1526
- [\`\${prefix}.MsglibConnectionDefault.address\`]: formatAddress(fixture.msglibConnectionDefault.address),
1526
+ [\`\${prefix}.msglibConnection.address\`]: formatAddress(fixture.msglibConnection.address),
1527
1527
  [\`\${prefix}.smlConnectionCustom.address\`]: formatAddress(fixture.msglibConnectionCustom?.address ?? ''),
1528
1528
  }
1529
1529
  }
@@ -2739,7 +2739,13 @@ export async function runtimeDecoder(contract: SandboxContract<TonContractWrappe
2739
2739
  if (newCellFieldType === 'NULL') {
2740
2740
  newCellFieldType = 'cl::t::cellRef'
2741
2741
  } else {
2742
- newCellFieldType = keyMap[newCellFieldType] ?? newCellFieldType
2742
+ // Check if newCellFieldType is valid ASCII
2743
+ // eslint-disable-next-line no-control-regex
2744
+ if (!/^[p{ASCII}]+$/u.test(newCellFieldType)) {
2745
+ newCellFieldType = 'cl::t::cellRef'
2746
+ } else {
2747
+ newCellFieldType = keyMap[newCellFieldType] ?? newCellFieldType
2748
+ }
2743
2749
  }
2744
2750
  jsonField.fieldType = newCellFieldType
2745
2751
  tonObjectDefCopy[key] = jsonField
@@ -2790,8 +2796,8 @@ function generateSmlTestUtils(directory, filename) {
2790
2796
  {
2791
2797
  endpoint,
2792
2798
  channel,
2793
- msglibManagerDefault: smlManager,
2794
- msglibConnectionDefault: smlConnection,
2799
+ msglibManager: smlManager,
2800
+ msglibConnection: smlConnection,
2795
2801
  controller,
2796
2802
  }: OAppFixture,
2797
2803
  profile?: Profile
@@ -3051,7 +3057,7 @@ function generateSmlTestUtils(directory, filename) {
3051
3057
  )
3052
3058
 
3053
3059
  // ===================================deploy and configure sml default=====================================
3054
- ;[srcFixture.msglibManagerDefault, srcFixture.msglibConnectionDefault] = await deployConfigAndRegisterSml(
3060
+ ;[srcFixture.msglibManager, srcFixture.msglibConnection] = await deployConfigAndRegisterSml(
3055
3061
  blockchain,
3056
3062
  multiSigners,
3057
3063
  allStorages,
@@ -3069,14 +3075,14 @@ function generateSmlTestUtils(directory, filename) {
3069
3075
  blockchain,
3070
3076
  allStorages,
3071
3077
  multiSigners,
3072
- srcFixture.msglibManagerDefault,
3073
- srcFixture.msglibManagerDefault,
3078
+ srcFixture.msglibManager,
3079
+ srcFixture.msglibManager,
3074
3080
  srcFixture,
3075
3081
  dstFixture
3076
3082
  )
3077
3083
 
3078
3084
  // in SML, the connection is the Msglib
3079
- srcFixture.msglib = srcFixture.msglibConnectionDefault
3085
+ srcFixture.msglib = srcFixture.msglibConnection
3080
3086
 
3081
3087
  await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.controller)
3082
3088
  expect(eventHandler.allFailures.txList).toHaveLength(0)
@@ -3216,7 +3222,9 @@ export interface PricedfeedCacheFixture extends WorkerFixture {
3216
3222
 
3217
3223
  export interface ProtocolFixtureULN extends ProtocolFixture {
3218
3224
  sendDvnFixtures: DvnFixture[]
3225
+ sendDvnFixturesCustom: DvnFixture[]
3219
3226
  receiveDvnFixtures: DvnFixture[]
3227
+ receiveDvnFixturesCustom: DvnFixture[]
3220
3228
  executorFixtures: ExecutorFixture
3221
3229
  priceFeedCacheFixture: PricedfeedCacheFixture
3222
3230
  }
@@ -3259,8 +3267,8 @@ export async function commitVerificationAndExpect(
3259
3267
  endpoint,
3260
3268
  channel,
3261
3269
  msglib: uln,
3262
- msglibManagerDefault: ulnManager,
3263
- msglibConnectionDefault: ulnConnection,
3270
+ msglibManager: ulnManager,
3271
+ msglibConnection: ulnConnection,
3264
3272
  controller,
3265
3273
  }: OAppFixture,
3266
3274
  profile?: Profile
@@ -3348,7 +3356,9 @@ export async function addUlnWorker(
3348
3356
 
3349
3357
  export async function addDvnWorkers(
3350
3358
  allStorages: SandboxContract<TonContractWrapper>,
3351
- { sendDvnFixtures, receiveDvnFixtures, msglibManagerDefault, msglib: uln }: OAppFixtureULN,
3359
+ { msglibManager, msglib: uln }: OAppFixtureULN,
3360
+ sendDvnFixtures: DvnFixture[],
3361
+ receiveDvnFixtures: DvnFixture[],
3352
3362
  dstEid: bigint,
3353
3363
  priceFeedCacheAddress: Address,
3354
3364
  eventHandler: LzEventHandler
@@ -3358,7 +3368,7 @@ export async function addDvnWorkers(
3358
3368
  requireDefined(uln)
3359
3369
  for (const dvnFixture of [...sendDvnFixtures, ...receiveDvnFixtures]) {
3360
3370
  const dvnWorkerCallMd = await allStorages.getNewMdExecuteParams({
3361
- target: addressToBigInt(msglibManagerDefault.address),
3371
+ target: addressToBigInt(msglibManager.address),
3362
3372
  callData: await allStorages.getNewUlnWorkerFeelibInfo({
3363
3373
  workerAddress: addressToBigInt(dvnFixture.dvn.address),
3364
3374
  workerFeelibBytecode: cellFromArtifact(DvnFeelibArtifact),
@@ -3392,12 +3402,12 @@ export async function addDvnWorkers(
3392
3402
  },
3393
3403
  {
3394
3404
  from: dvnFixture.proxy.address,
3395
- to: msglibManagerDefault.address,
3405
+ to: msglibManager.address,
3396
3406
  op: Number(OPCODES.UlnManager_OP_ADD_ULN_WORKER),
3397
3407
  success: true,
3398
3408
  },
3399
3409
  {
3400
- from: msglibManagerDefault.address,
3410
+ from: msglibManager.address,
3401
3411
  to: uln.address,
3402
3412
  success: true,
3403
3413
  op: Number(OPCODES.Uln_OP_UPDATE_WORKER_FEELIB),
@@ -3405,12 +3415,12 @@ export async function addDvnWorkers(
3405
3415
  // emit event Uln::EVENT::ULN_WORKER_REGISTERED
3406
3416
  {
3407
3417
  from: uln.address,
3408
- to: msglibManagerDefault.address,
3418
+ to: msglibManager.address,
3409
3419
  op: Number(OPCODES.BaseInterface_OP_EVENT),
3410
3420
  success: false, // events are supposed to fail
3411
3421
  },
3412
3422
  ])
3413
- await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, msglibManagerDefault)
3423
+ await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, msglibManager)
3414
3424
  }
3415
3425
  }
3416
3426
 
@@ -3442,7 +3452,7 @@ export async function openAndDeployUln(
3442
3452
  TonContractWrapper.create(
3443
3453
  cellFromArtifact(UlnArtifact),
3444
3454
  await allStorages.getNewUln({
3445
- owner: addressToBigInt(srcFixture.msglibManagerDefault.address),
3455
+ owner: addressToBigInt(srcFixture.msglibManager.address),
3446
3456
  eid: srcFixture.eid,
3447
3457
  dstEid: dstFixture.eid,
3448
3458
  })
@@ -3460,17 +3470,17 @@ export async function openAndDeployUln(
3460
3470
  toNano('0')
3461
3471
  ).body!,
3462
3472
  signers: multiSigners,
3463
- targetContract: srcFixture.msglibManagerDefault,
3473
+ targetContract: srcFixture.msglibManager,
3464
3474
  deploy: false,
3465
3475
  expectedTransactions: [
3466
3476
  {
3467
3477
  from: srcFixture.multisig.address,
3468
- to: srcFixture.msglibManagerDefault.address,
3478
+ to: srcFixture.msglibManager.address,
3469
3479
  op: Number(OPCODES.UlnManager_OP_DEPLOY_ULN),
3470
3480
  success: true,
3471
3481
  },
3472
3482
  {
3473
- from: srcFixture.msglibManagerDefault.address,
3483
+ from: srcFixture.msglibManager.address,
3474
3484
  to: uln.address,
3475
3485
  success: true,
3476
3486
  deploy: true,
@@ -3559,7 +3569,7 @@ export async function openAndDeployUlnConnection(
3559
3569
  TonContractWrapper.create(
3560
3570
  cellFromArtifact(UlnConnectionArtifact),
3561
3571
  await allStorages.getNewUlnConnection({
3562
- owner: addressToBigInt(srcFixture.msglibManagerDefault.address),
3572
+ owner: addressToBigInt(srcFixture.msglibManager.address),
3563
3573
  path: srcFixture.path,
3564
3574
  ulnAddress: addressToBigInt(srcFixture.msglib.address),
3565
3575
  })
@@ -3596,7 +3606,7 @@ export async function openAndDeployUlnConnection(
3596
3606
  opCode: OPCODES.OP_DeployConnection,
3597
3607
  md: await allStorages.getNewMdMdAddress({
3598
3608
  md: deployMd,
3599
- address: addressToBigInt(srcFixture.msglibManagerDefault.address),
3609
+ address: addressToBigInt(srcFixture.msglibManager.address),
3600
3610
  }),
3601
3611
  expectedTransactions: [
3602
3612
  {
@@ -3607,12 +3617,12 @@ export async function openAndDeployUlnConnection(
3607
3617
  },
3608
3618
  {
3609
3619
  from: srcFixture.oApp.address,
3610
- to: srcFixture.msglibManagerDefault.address,
3620
+ to: srcFixture.msglibManager.address,
3611
3621
  op: Number(OPCODES.MsglibManager_OP_DEPLOY_CONNECTION),
3612
3622
  success: true,
3613
3623
  },
3614
3624
  {
3615
- from: srcFixture.msglibManagerDefault.address,
3625
+ from: srcFixture.msglibManager.address,
3616
3626
  to: ulnConnection.address,
3617
3627
  op: Number(OPCODES.BaseInterface_OP_INITIALIZE),
3618
3628
  deploy: true,
@@ -3789,17 +3799,17 @@ export async function registerUlnWorkerInfo(
3789
3799
  toNano('0.1')
3790
3800
  ).body!,
3791
3801
  signers: multiSigners,
3792
- targetContract: srcFixture.msglibManagerDefault,
3802
+ targetContract: srcFixture.msglibManager,
3793
3803
  deploy: false,
3794
3804
  expectedTransactions: [
3795
3805
  {
3796
3806
  from: srcFixture.multisig.address,
3797
- to: srcFixture.msglibManagerDefault.address,
3807
+ to: srcFixture.msglibManager.address,
3798
3808
  op: Number(OPCODES.UlnManager_OP_REGISTER_WORKER_FEELIB_BYTECODE),
3799
3809
  success: true,
3800
3810
  },
3801
3811
  {
3802
- from: srcFixture.msglibManagerDefault.address,
3812
+ from: srcFixture.msglibManager.address,
3803
3813
  to: srcFixture.multisig.address,
3804
3814
  },
3805
3815
  ],
@@ -3812,9 +3822,12 @@ export async function deployConfigAndRegisterDvn(
3812
3822
  fixture: OAppFixtureULN,
3813
3823
  eventHandler: LzEventHandler,
3814
3824
  dvnFixtureConfig: DvnFixtureConfig
3815
- ): Promise<void> {
3825
+ ): Promise<[DvnFixture[], DvnFixture[]]> {
3816
3826
  const dvnAdmins = [fixture.owner]
3817
3827
  const verifierSet = generateRandomVerifierSet(3)
3828
+
3829
+ const sendDvnFixtures: DvnFixture[] = []
3830
+ const receiveDvnFixtures: DvnFixture[] = []
3818
3831
 
3819
3832
  for (let i = 0; i < dvnFixtureConfig.src.send.numReqDvns + dvnFixtureConfig.src.send.numOptDvns; i++) {
3820
3833
  const [dvn, dvnProxy, dvnMsgResults] = await openAndDeployDvnAndProxy(
@@ -3826,7 +3839,7 @@ export async function deployConfigAndRegisterDvn(
3826
3839
  BigInt(i)
3827
3840
  )
3828
3841
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
3829
- ;(fixture.sendDvnFixtures = fixture.sendDvnFixtures ?? []).push({
3842
+ sendDvnFixtures.push({
3830
3843
  dvn,
3831
3844
  proxy: dvnProxy,
3832
3845
  admins: dvnAdmins,
@@ -3846,7 +3859,7 @@ export async function deployConfigAndRegisterDvn(
3846
3859
  BigInt(randomNumber + i)
3847
3860
  )
3848
3861
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
3849
- ;(fixture.receiveDvnFixtures = fixture.receiveDvnFixtures ?? []).push({
3862
+ receiveDvnFixtures.push({
3850
3863
  dvn,
3851
3864
  proxy: dvnProxy,
3852
3865
  admins: dvnAdmins,
@@ -3854,6 +3867,8 @@ export async function deployConfigAndRegisterDvn(
3854
3867
  })
3855
3868
  await eventHandler.addCurrentEventsToAllEvents(dvnMsgResults, dvn)
3856
3869
  }
3870
+
3871
+ return [sendDvnFixtures, receiveDvnFixtures]
3857
3872
  }
3858
3873
 
3859
3874
  export async function deployConfigAndRegisterUln(
@@ -3865,7 +3880,8 @@ export async function deployConfigAndRegisterUln(
3865
3880
  version: bigint,
3866
3881
  eventHandler: LzEventHandler,
3867
3882
  dvnFixtureConfig: DvnFixtureConfig
3868
- ): Promise<[SandboxContract<TonContractWrapper>, SandboxContract<TonContractWrapper>]> {
3883
+ ): Promise<SandboxContract<TonContractWrapper>> {
3884
+
3869
3885
  // ===================================open and deploy uln manager =====================================
3870
3886
 
3871
3887
  const [msglibManager, ulnManagerMsgResults] = await openAndDeployUlnManagerViaMultisig(
@@ -3875,12 +3891,18 @@ export async function deployConfigAndRegisterUln(
3875
3891
  srcFixture
3876
3892
  )
3877
3893
  await eventHandler.addCurrentEventsToAllEvents(ulnManagerMsgResults, msglibManager)
3878
- srcFixture.msglibManagerDefault = msglibManager
3894
+ srcFixture.msglibManager = msglibManager
3879
3895
 
3880
3896
  // ===================================open and deploy dvn =====================================
3881
3897
 
3882
- await deployConfigAndRegisterDvn(blockchain, allStorages, srcFixture, eventHandler, dvnFixtureConfig)
3883
-
3898
+ ;[srcFixture.sendDvnFixtures, srcFixture.receiveDvnFixtures] = await deployConfigAndRegisterDvn(
3899
+ blockchain,
3900
+ allStorages,
3901
+ srcFixture,
3902
+ eventHandler,
3903
+ dvnFixtureConfig
3904
+ )
3905
+
3884
3906
  // ===================================open and deploy executor=====================================
3885
3907
 
3886
3908
  const executorAdmins = [srcFixture.owner]
@@ -3923,7 +3945,7 @@ export async function deployConfigAndRegisterUln(
3923
3945
  bytecode: cellFromArtifact(DvnFeelibArtifact),
3924
3946
  })
3925
3947
  )
3926
- await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.msglibManagerDefault)
3948
+ await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.msglibManager)
3927
3949
 
3928
3950
  // ============================registerUlnWorkerInfo - executorFeeLib=======================================
3929
3951
 
@@ -3935,7 +3957,7 @@ export async function deployConfigAndRegisterUln(
3935
3957
  bytecode: cellFromArtifact(ExecutorFeelibArtifact),
3936
3958
  })
3937
3959
  )
3938
- await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.msglibManagerDefault)
3960
+ await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.msglibManager)
3939
3961
 
3940
3962
  // ============================registerUlnWorkerInfo - priceFeeLib(empty bytes)================================
3941
3963
 
@@ -3947,7 +3969,7 @@ export async function deployConfigAndRegisterUln(
3947
3969
  bytecode: emptyObject,
3948
3970
  })
3949
3971
  )
3950
- await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.msglibManagerDefault)
3972
+ await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.msglibManager)
3951
3973
 
3952
3974
  // ===================================open and deploy uln =============================================
3953
3975
 
@@ -3973,12 +3995,20 @@ export async function deployConfigAndRegisterUln(
3973
3995
 
3974
3996
  // ===================================addUlnWorker - dvn =======================================
3975
3997
 
3976
- await addDvnWorkers(allStorages, srcFixture, dstFixture.eid, priceFeedCacheProxy.address, eventHandler)
3977
-
3998
+ await addDvnWorkers(
3999
+ allStorages,
4000
+ srcFixture,
4001
+ srcFixture.sendDvnFixtures,
4002
+ srcFixture.receiveDvnFixtures,
4003
+ dstFixture.eid,
4004
+ priceFeedCacheProxy.address,
4005
+ eventHandler
4006
+ )
4007
+
3978
4008
  // ===================================addUlnWorker - executor =======================================
3979
4009
 
3980
4010
  const executorWorkerCallMd = await allStorages.getNewMdExecuteParams({
3981
- target: addressToBigInt(srcFixture.msglibManagerDefault.address),
4011
+ target: addressToBigInt(srcFixture.msglibManager.address),
3982
4012
  callData: await allStorages.getNewUlnWorkerFeelibInfo({
3983
4013
  workerAddress: addressToBigInt(executor.address),
3984
4014
  workerFeelibBytecode: cellFromArtifact(ExecutorFeelibArtifact),
@@ -4013,12 +4043,12 @@ export async function deployConfigAndRegisterUln(
4013
4043
  },
4014
4044
  {
4015
4045
  from: srcFixture.executorFixtures.proxy.address,
4016
- to: srcFixture.msglibManagerDefault.address,
4046
+ to: srcFixture.msglibManager.address,
4017
4047
  op: Number(OPCODES.UlnManager_OP_ADD_ULN_WORKER),
4018
4048
  success: true,
4019
4049
  },
4020
4050
  {
4021
- from: srcFixture.msglibManagerDefault.address,
4051
+ from: srcFixture.msglibManager.address,
4022
4052
  to: srcFixture.msglib.address,
4023
4053
  success: true,
4024
4054
  op: Number(OPCODES.Uln_OP_UPDATE_WORKER_FEELIB),
@@ -4026,17 +4056,17 @@ export async function deployConfigAndRegisterUln(
4026
4056
  // emit event Uln::EVENT::ULN_WORKER_REGISTERED
4027
4057
  {
4028
4058
  from: srcFixture.msglib.address,
4029
- to: srcFixture.msglibManagerDefault.address,
4059
+ to: srcFixture.msglibManager.address,
4030
4060
  op: Number(OPCODES.BaseInterface_OP_EVENT),
4031
4061
  success: false, // events are supposed to fail
4032
4062
  },
4033
4063
  ])
4034
- await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.msglibManagerDefault)
4064
+ await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.msglibManager)
4035
4065
 
4036
4066
  // ===================================addUlnWorker - priceFeedCache =======================================
4037
4067
 
4038
4068
  const priceFeedCacheWorkerCallMd = await allStorages.getNewMdExecuteParams({
4039
- target: addressToBigInt(srcFixture.msglibManagerDefault.address),
4069
+ target: addressToBigInt(srcFixture.msglibManager.address),
4040
4070
  callData: await allStorages.getNewUlnWorkerFeelibInfo({
4041
4071
  workerAddress: addressToBigInt(priceFeedCacheProxy.address),
4042
4072
  workerFeelibBytecode: emptyObject,
@@ -4078,12 +4108,12 @@ export async function deployConfigAndRegisterUln(
4078
4108
  },
4079
4109
  {
4080
4110
  from: priceFeedCacheProxy.address,
4081
- to: srcFixture.msglibManagerDefault.address,
4111
+ to: srcFixture.msglibManager.address,
4082
4112
  op: Number(OPCODES.UlnManager_OP_ADD_ULN_WORKER),
4083
4113
  success: true,
4084
4114
  },
4085
4115
  {
4086
- from: srcFixture.msglibManagerDefault.address,
4116
+ from: srcFixture.msglibManager.address,
4087
4117
  to: srcFixture.msglib.address,
4088
4118
  success: true,
4089
4119
  op: Number(OPCODES.Uln_OP_UPDATE_WORKER_FEELIB),
@@ -4091,24 +4121,13 @@ export async function deployConfigAndRegisterUln(
4091
4121
  // emit event Uln::EVENT::ULN_WORKER_REGISTERED
4092
4122
  {
4093
4123
  from: srcFixture.msglib.address,
4094
- to: srcFixture.msglibManagerDefault.address,
4124
+ to: srcFixture.msglibManager.address,
4095
4125
  op: Number(OPCODES.BaseInterface_OP_EVENT),
4096
4126
  success: false, // events are supposed to fail
4097
4127
  },
4098
4128
  ]
4099
4129
  )
4100
- await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.msglibManagerDefault)
4101
-
4102
- // ===================================open and deploy uln connection =====================================
4103
-
4104
- const [msglibConnection, ulnConnectionMsgResults] = await openAndDeployUlnConnection(
4105
- blockchain,
4106
- allStorages,
4107
- srcFixture,
4108
- dstFixture
4109
- )
4110
- srcFixture.msglibConnectionDefault = msglibConnection
4111
- await eventHandler.addCurrentEventsToAllEvents(ulnConnectionMsgResults, srcFixture.oApp)
4130
+ await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.msglibManager)
4112
4131
 
4113
4132
  // ===================================configure default send and receive config =====================================
4114
4133
 
@@ -4143,17 +4162,17 @@ export async function deployConfigAndRegisterUln(
4143
4162
  toNano('0.1')
4144
4163
  ).body!,
4145
4164
  signers: multiSigners,
4146
- targetContract: srcFixture.msglibManagerDefault,
4165
+ targetContract: srcFixture.msglibManager,
4147
4166
  deploy: false,
4148
4167
  expectedTransactions: [
4149
4168
  {
4150
4169
  from: srcFixture.multisig.address,
4151
- to: srcFixture.msglibManagerDefault.address,
4170
+ to: srcFixture.msglibManager.address,
4152
4171
  success: true,
4153
4172
  op: Number(OPCODES.UlnManager_OP_SET_DEFAULT_ULN_SEND_CONFIG),
4154
4173
  },
4155
4174
  {
4156
- from: srcFixture.msglibManagerDefault.address,
4175
+ from: srcFixture.msglibManager.address,
4157
4176
  to: srcFixture.msglib.address,
4158
4177
  success: true,
4159
4178
  op: Number(OPCODES.Uln_OP_SET_DEFAULT_ULN_SEND_CONFIG),
@@ -4192,17 +4211,17 @@ export async function deployConfigAndRegisterUln(
4192
4211
  toNano('0.1')
4193
4212
  ).body!,
4194
4213
  signers: multiSigners,
4195
- targetContract: srcFixture.msglibManagerDefault,
4214
+ targetContract: srcFixture.msglibManager,
4196
4215
  deploy: false,
4197
4216
  expectedTransactions: [
4198
4217
  {
4199
4218
  from: srcFixture.multisig.address,
4200
- to: srcFixture.msglibManagerDefault.address,
4219
+ to: srcFixture.msglibManager.address,
4201
4220
  success: true,
4202
4221
  op: Number(OPCODES.UlnManager_OP_SET_DEFAULT_ULN_RECEIVE_CONFIG),
4203
4222
  },
4204
4223
  {
4205
- from: srcFixture.msglibManagerDefault.address,
4224
+ from: srcFixture.msglibManager.address,
4206
4225
  to: srcFixture.msglib.address,
4207
4226
  success: true,
4208
4227
  op: Number(OPCODES.Uln_OP_SET_DEFAULT_ULN_RECEIVE_CONFIG),
@@ -4210,7 +4229,7 @@ export async function deployConfigAndRegisterUln(
4210
4229
  ],
4211
4230
  })
4212
4231
 
4213
- return [msglibManager, msglibConnection]
4232
+ return msglibManager
4214
4233
  }
4215
4234
 
4216
4235
  export async function wireFixtureWithUln(
@@ -4220,14 +4239,42 @@ export async function wireFixtureWithUln(
4220
4239
  srcFixture: OAppFixtureULN,
4221
4240
  dstFixture: OAppFixtureULN,
4222
4241
  eventHandler: LzEventHandler,
4223
- dvnFixtureConfig: DvnFixtureConfig
4242
+ dvnFixtureConfigCustom?: DvnFixtureConfig
4224
4243
  ): Promise<void> {
4225
4244
  // ===================================wire channels=====================================
4226
4245
 
4227
4246
  await wireChannels(blockchain, allStorages, srcFixture, dstFixture, eventHandler)
4228
4247
 
4229
- // ===================================deploy and configure uln default=====================================
4230
- ;[srcFixture.msglibManagerDefault, srcFixture.msglibConnectionDefault] = await deployConfigAndRegisterUln(
4248
+ // ===================================default config =====================================
4249
+
4250
+ const defaultDvnFixtureConfig: DvnFixtureConfig = {
4251
+ src: {
4252
+ send: {
4253
+ numReqDvns: 1n,
4254
+ numOptDvns: 0n,
4255
+ },
4256
+ receive: {
4257
+ numReqDvns: 1n,
4258
+ numOptDvns: 0n,
4259
+ optDvnQuorum: 0n,
4260
+ },
4261
+ },
4262
+ dst: {
4263
+ send: {
4264
+ numReqDvns: 1n,
4265
+ numOptDvns: 0n,
4266
+ },
4267
+ receive: {
4268
+ numReqDvns: 1n,
4269
+ numOptDvns: 0n,
4270
+ optDvnQuorum: 0n,
4271
+ },
4272
+ },
4273
+ }
4274
+
4275
+ // ===================================deploy, configue, and register uln =====================================
4276
+
4277
+ srcFixture.msglibManager = await deployConfigAndRegisterUln(
4231
4278
  blockchain,
4232
4279
  multiSigners,
4233
4280
  allStorages,
@@ -4235,17 +4282,30 @@ export async function wireFixtureWithUln(
4235
4282
  dstFixture,
4236
4283
  ULN_MANAGER_DEFAULT_VERSION,
4237
4284
  eventHandler,
4238
- dvnFixtureConfig
4285
+ defaultDvnFixtureConfig
4239
4286
  )
4240
4287
 
4288
+ // ===================================add msg lib to controller =====================================
4289
+
4241
4290
  let internalMsgResults = await addMsgLibToController(
4242
4291
  blockchain,
4243
4292
  multiSigners,
4244
4293
  srcFixture,
4245
4294
  dstFixture,
4246
- srcFixture.msglibManagerDefault
4295
+ srcFixture.msglibManager
4247
4296
  )
4248
4297
  await eventHandler.addCurrentEventsToAllEvents(internalMsgResults, srcFixture.controller)
4298
+
4299
+ // ===================================open and deploy uln connection =====================================
4300
+
4301
+ const [msglibConnection, ulnConnectionMsgResults] = await openAndDeployUlnConnection(
4302
+ blockchain,
4303
+ allStorages,
4304
+ srcFixture,
4305
+ dstFixture
4306
+ )
4307
+ srcFixture.msglibConnection = msglibConnection
4308
+ await eventHandler.addCurrentEventsToAllEvents(ulnConnectionMsgResults, srcFixture.oApp)
4249
4309
 
4250
4310
  // ===================================set default endpoint config=====================================
4251
4311
 
@@ -4253,8 +4313,8 @@ export async function wireFixtureWithUln(
4253
4313
  blockchain,
4254
4314
  allStorages,
4255
4315
  multiSigners,
4256
- srcFixture.msglibManagerDefault,
4257
- srcFixture.msglibManagerDefault,
4316
+ srcFixture.msglibManager,
4317
+ srcFixture.msglibManager,
4258
4318
  srcFixture,
4259
4319
  dstFixture
4260
4320
  )
@@ -4263,6 +4323,134 @@ export async function wireFixtureWithUln(
4263
4323
 
4264
4324
  // expect no failures
4265
4325
  expect(eventHandler.allFailures.txList).toHaveLength(0)
4326
+
4327
+
4328
+ if (dvnFixtureConfigCustom) {
4329
+ // ===================================open and deploy dvn =====================================
4330
+
4331
+ ;[srcFixture.sendDvnFixturesCustom, srcFixture.receiveDvnFixturesCustom] = await deployConfigAndRegisterDvn(
4332
+ blockchain,
4333
+ allStorages,
4334
+ srcFixture,
4335
+ eventHandler,
4336
+ dvnFixtureConfigCustom
4337
+ )
4338
+
4339
+ // ===================================addUlnWorker - dvn =======================================
4340
+
4341
+ await addDvnWorkers(
4342
+ allStorages,
4343
+ srcFixture,
4344
+ srcFixture.sendDvnFixturesCustom,
4345
+ srcFixture.receiveDvnFixturesCustom,
4346
+ dstFixture.eid,
4347
+ srcFixture.priceFeedCacheFixture.proxy.address,
4348
+ eventHandler
4349
+ )
4350
+
4351
+ const [reqSendDvns, optSendDvns] = getDvnArrayFromDvnFixtures(
4352
+ srcFixture.sendDvnFixturesCustom,
4353
+ dvnFixtureConfigCustom.src.send
4354
+ )
4355
+
4356
+ const ulnSendConfig = await allStorages.getNewUlnSendConfig({
4357
+ workerQuoteGasLimit: BigInt(100000000),
4358
+ maxMessageBytes: BigInt(1000000000),
4359
+ executorNull: BigInt(0),
4360
+ executor: addressToBigInt(srcFixture.executorFixtures.proxy.address),
4361
+ requiredDVNsNull: BigInt(0),
4362
+ requiredDVNs: serializeDvns(reqSendDvns),
4363
+ optionalDVNsNull: BigInt(0),
4364
+ optionalDVNs: serializeDvns(optSendDvns),
4365
+ confirmationsNull: BigInt(0),
4366
+ confirmations: BigInt(1),
4367
+ })
4368
+
4369
+ await sendInternalMessageAndExpect({
4370
+ value: protocolSetupGas['MsgLib.INITIALIZE'],
4371
+ sender: srcFixture.owner.getSender(),
4372
+ contract: srcFixture.oApp,
4373
+ opCode: OPCODES.OP_SetLzConfig,
4374
+ md: await allStorages.getNewLzConfig({
4375
+ path: srcFixture.path,
4376
+ forwardingAddress: addressToBigInt(srcFixture.msglibManager.address),
4377
+ opCode: OPCODES.UlnManager_OP_SET_OAPP_ULN_SEND_CONFIG,
4378
+ config: ulnSendConfig,
4379
+ }),
4380
+ balanceRefill: toNano('1'),
4381
+ expectedTransactions: [
4382
+ {
4383
+ from: srcFixture.owner.address,
4384
+ to: srcFixture.oApp.address,
4385
+ op: Number(OPCODES.OP_SetLzConfig),
4386
+ success: true,
4387
+ },
4388
+ {
4389
+ from: srcFixture.oApp.address,
4390
+ to: srcFixture.msglibManager.address,
4391
+ op: Number(OPCODES.UlnManager_OP_SET_OAPP_ULN_SEND_CONFIG),
4392
+ success: true,
4393
+ },
4394
+ {
4395
+ from: srcFixture.msglibManager.address,
4396
+ to: srcFixture.msglibConnection.address,
4397
+ op: Number(OPCODES.UlnConnection_OP_SET_OAPP_ULN_SEND_CONFIG),
4398
+ success: true,
4399
+ },
4400
+ ],
4401
+ })
4402
+
4403
+ const [reqReceiveDvns, optReceiveDvns, optReceiveQuorum] = getDvnArrayFromDvnFixtures(
4404
+ srcFixture.receiveDvnFixturesCustom,
4405
+ dvnFixtureConfigCustom.src.receive
4406
+ )
4407
+
4408
+ const ulnReceiveConfig = await allStorages.getNewUlnReceiveConfig({
4409
+ minCommitPacketGasNull: BigInt(0),
4410
+ minCommitPacketGas: BigInt(1),
4411
+ confirmationsNull: BigInt(0),
4412
+ confirmations: BigInt(1),
4413
+ requiredDVNsNull: BigInt(0),
4414
+ requiredDVNs: serializeDvns(reqReceiveDvns),
4415
+ optionalDVNsNull: BigInt(0),
4416
+ optionalDVNs: serializeDvns(optReceiveDvns),
4417
+ optionalDVNThreshold: BigInt(optReceiveQuorum),
4418
+ })
4419
+
4420
+ await sendInternalMessageAndExpect({
4421
+ value: protocolSetupGas['MsgLib.INITIALIZE'],
4422
+ sender: srcFixture.owner.getSender(),
4423
+ contract: srcFixture.oApp,
4424
+ opCode: OPCODES.OP_SetLzConfig,
4425
+ md: await allStorages.getNewLzConfig({
4426
+ path: srcFixture.path,
4427
+ forwardingAddress: addressToBigInt(srcFixture.msglibManager.address),
4428
+ opCode: OPCODES.UlnManager_OP_SET_OAPP_ULN_RECEIVE_CONFIG,
4429
+ config: ulnReceiveConfig,
4430
+ }),
4431
+ balanceRefill: toNano('1'),
4432
+ expectedTransactions: [
4433
+ {
4434
+ from: srcFixture.owner.address,
4435
+ to: srcFixture.oApp.address,
4436
+ op: Number(OPCODES.OP_SetLzConfig),
4437
+ success: true,
4438
+ },
4439
+ {
4440
+ from: srcFixture.oApp.address,
4441
+ to: srcFixture.msglibManager.address,
4442
+ op: Number(OPCODES.UlnManager_OP_SET_OAPP_ULN_RECEIVE_CONFIG),
4443
+ success: true,
4444
+ },
4445
+ {
4446
+ from: srcFixture.msglibManager.address,
4447
+ to: srcFixture.msglibConnection.address,
4448
+ op: Number(OPCODES.UlnConnection_OP_SET_OAPP_ULN_RECEIVE_CONFIG),
4449
+ success: true,
4450
+ },
4451
+ ],
4452
+ })
4453
+ }
4266
4454
  }
4267
4455
 
4268
4456
  export async function wireFixturesTogetherWithUln(
@@ -4272,30 +4460,7 @@ export async function wireFixturesTogetherWithUln(
4272
4460
  srcFixture: OAppFixtureULN,
4273
4461
  dstFixture: OAppFixtureULN,
4274
4462
  eventHandler: LzEventHandler,
4275
- defaultDvnFixtureConfig: DvnFixtureConfig = {
4276
- src: {
4277
- send: {
4278
- numReqDvns: 1n,
4279
- numOptDvns: 0n,
4280
- },
4281
- receive: {
4282
- numReqDvns: 1n,
4283
- numOptDvns: 0n,
4284
- optDvnQuorum: 0n,
4285
- },
4286
- },
4287
- dst: {
4288
- send: {
4289
- numReqDvns: 1n,
4290
- numOptDvns: 0n,
4291
- },
4292
- receive: {
4293
- numReqDvns: 1n,
4294
- numOptDvns: 0n,
4295
- optDvnQuorum: 0n,
4296
- },
4297
- },
4298
- }
4463
+ dvnFixtureConfigCustom?: DvnFixtureConfig
4299
4464
  ): Promise<void> {
4300
4465
  await wireFixtureWithUln(
4301
4466
  blockchain,
@@ -4304,7 +4469,7 @@ export async function wireFixturesTogetherWithUln(
4304
4469
  srcFixture,
4305
4470
  dstFixture,
4306
4471
  eventHandler,
4307
- defaultDvnFixtureConfig
4472
+ dvnFixtureConfigCustom
4308
4473
  )
4309
4474
  await wireFixtureWithUln(
4310
4475
  blockchain,
@@ -4313,7 +4478,7 @@ export async function wireFixturesTogetherWithUln(
4313
4478
  dstFixture,
4314
4479
  srcFixture,
4315
4480
  eventHandler,
4316
- defaultDvnFixtureConfig
4481
+ dvnFixtureConfigCustom
4317
4482
  )
4318
4483
  }
4319
4484
 
@@ -4629,7 +4794,10 @@ export async function callVerifyOnDvn({
4629
4794
  export async function ulnVerifyAndExpect(
4630
4795
  allStorages: SandboxContract<TonContractWrapper>,
4631
4796
  mdPacketSent: MdPacketSent,
4632
- { msglib: uln, msglibConnectionDefault, msglibManagerDefault, receiveDvnFixtures }: OAppFixtureULN,
4797
+ { msglib: uln }: OAppFixtureULN,
4798
+ receiveDvnFixtures: DvnFixture[],
4799
+ msglibManager: SandboxContract<TonContractWrapper>,
4800
+ msglibConnection: SandboxContract<TonContractWrapper>,
4633
4801
  eventHandler: LzEventHandler,
4634
4802
  confirmations = 1n
4635
4803
  ): Promise<Cell> {
@@ -4647,7 +4815,7 @@ export async function ulnVerifyAndExpect(
4647
4815
  hash: BigInt('0x' + lzPacket.hash().toString('hex')),
4648
4816
  confirmations,
4649
4817
  }),
4650
- address: addressToBigInt(msglibConnectionDefault.address),
4818
+ address: addressToBigInt(msglibConnection.address),
4651
4819
  }),
4652
4820
  expiration: oneDayFromNow,
4653
4821
  opcode: OPCODES.Uln_OP_ULN_VERIFY,
@@ -4684,19 +4852,19 @@ export async function ulnVerifyAndExpect(
4684
4852
  },
4685
4853
  {
4686
4854
  from: uln.address,
4687
- to: msglibConnectionDefault.address,
4855
+ to: msglibConnection.address,
4688
4856
  op: Number(OPCODES.UlnConnection_OP_ULN_CONNECTION_VERIFY),
4689
4857
  success: true,
4690
4858
  },
4691
4859
  // emit UlnConnection::EVENT::PACKET_VERIFIED
4692
4860
  {
4693
- from: msglibConnectionDefault.address,
4694
- to: msglibManagerDefault.address,
4861
+ from: msglibConnection.address,
4862
+ to: msglibManager.address,
4695
4863
  op: Number(OPCODES.BaseInterface_OP_EVENT),
4696
4864
  success: false, // events are supposed to fail
4697
4865
  },
4698
4866
  {
4699
- from: msglibConnectionDefault.address,
4867
+ from: msglibConnection.address,
4700
4868
  to: proxy.address,
4701
4869
  op: Number(OPCODES.UltraLightNode_OP_ULN_CONNECTION_VERIFY_CALLBACK),
4702
4870
  success: true,