@opcat-labs/cat-sdk 2.0.2 → 2.1.0
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/artifacts/cat20/cat20.json +34 -34
- package/artifacts/cat20/cat20.scrypt +18 -18
- package/artifacts/cat20/cat20Admin.json +36 -36
- package/artifacts/cat20/cat20Admin.scrypt +30 -30
- package/artifacts/cat20/cat20GuardStateLib.json +21 -21
- package/artifacts/cat20/cat20GuardStateLib.scrypt +5 -5
- package/artifacts/cat20/cat20Guard_12_12_2.json +30 -30
- package/artifacts/cat20/cat20Guard_12_12_2.scrypt +21 -21
- package/artifacts/cat20/cat20Guard_12_12_4.json +30 -30
- package/artifacts/cat20/cat20Guard_12_12_4.scrypt +21 -21
- package/artifacts/cat20/cat20Guard_6_6_2.json +30 -30
- package/artifacts/cat20/cat20Guard_6_6_2.scrypt +21 -21
- package/artifacts/cat20/cat20Guard_6_6_4.json +30 -30
- package/artifacts/cat20/cat20Guard_6_6_4.scrypt +21 -21
- package/artifacts/cat20/cat20StateLib.json +22 -22
- package/artifacts/cat20/cat20StateLib.scrypt +5 -5
- package/artifacts/cat20/minters/cat20ClosedMinter.json +34 -34
- package/artifacts/cat20/minters/cat20ClosedMinter.scrypt +22 -22
- package/artifacts/cat20/minters/cat20OpenMinter.json +34 -34
- package/artifacts/cat20/minters/cat20OpenMinter.scrypt +18 -18
- package/artifacts/cat20/types.json +5 -5
- package/artifacts/cat20/types.scrypt +5 -5
- package/artifacts/cat721/cat721.json +34 -34
- package/artifacts/cat721/cat721.scrypt +18 -18
- package/artifacts/cat721/cat721GuardStateLib.json +21 -21
- package/artifacts/cat721/cat721GuardStateLib.scrypt +5 -5
- package/artifacts/cat721/cat721Guard_12_12_2.json +29 -29
- package/artifacts/cat721/cat721Guard_12_12_2.scrypt +18 -18
- package/artifacts/cat721/cat721Guard_12_12_4.json +29 -29
- package/artifacts/cat721/cat721Guard_12_12_4.scrypt +18 -18
- package/artifacts/cat721/cat721Guard_6_6_2.json +29 -29
- package/artifacts/cat721/cat721Guard_6_6_2.scrypt +18 -18
- package/artifacts/cat721/cat721Guard_6_6_4.json +29 -29
- package/artifacts/cat721/cat721Guard_6_6_4.scrypt +18 -18
- package/artifacts/cat721/cat721StateLib.json +22 -22
- package/artifacts/cat721/cat721StateLib.scrypt +5 -5
- package/artifacts/cat721/minters/cat721ClosedMinter.json +34 -34
- package/artifacts/cat721/minters/cat721ClosedMinter.scrypt +18 -18
- package/artifacts/cat721/minters/cat721OpenMintInfo.json +5 -5
- package/artifacts/cat721/minters/cat721OpenMintInfo.scrypt +4 -4
- package/artifacts/cat721/minters/cat721OpenMinter.json +39 -39
- package/artifacts/cat721/minters/cat721OpenMinter.scrypt +22 -22
- package/artifacts/cat721/minters/cat721OpenMinterMerkleTree.json +19 -19
- package/artifacts/cat721/minters/cat721OpenMinterMerkleTree.scrypt +6 -6
- package/artifacts/cat721/types.json +5 -5
- package/artifacts/cat721/types.scrypt +5 -5
- package/artifacts/constants.json +2 -2
- package/artifacts/constants.scrypt +1 -1
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/backtrace.scrypt +16 -12
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/contextUtils.scrypt +16 -16
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stateUtils.scrypt +1 -1
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stdUtils.scrypt +12 -12
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txHashPreimageUtils.scrypt +7 -7
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txUtils.scrypt +12 -12
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/types/structs.scrypt +8 -8
- package/artifacts/types.json +2 -2
- package/artifacts/types.scrypt +2 -2
- package/artifacts/utils/ownerUtils.json +14 -14
- package/artifacts/utils/ownerUtils.scrypt +3 -3
- package/artifacts/utils/safeMath.json +14 -14
- package/artifacts/utils/safeMath.scrypt +1 -1
- package/dist/artifacts/cat20/cat20.json +34 -34
- package/dist/artifacts/cat20/cat20.scrypt +18 -18
- package/dist/artifacts/cat20/cat20Admin.json +36 -36
- package/dist/artifacts/cat20/cat20Admin.scrypt +30 -30
- package/dist/artifacts/cat20/cat20GuardStateLib.json +21 -21
- package/dist/artifacts/cat20/cat20GuardStateLib.scrypt +5 -5
- package/dist/artifacts/cat20/cat20Guard_12_12_2.json +30 -30
- package/dist/artifacts/cat20/cat20Guard_12_12_2.scrypt +21 -21
- package/dist/artifacts/cat20/cat20Guard_12_12_4.json +30 -30
- package/dist/artifacts/cat20/cat20Guard_12_12_4.scrypt +21 -21
- package/dist/artifacts/cat20/cat20Guard_6_6_2.json +30 -30
- package/dist/artifacts/cat20/cat20Guard_6_6_2.scrypt +21 -21
- package/dist/artifacts/cat20/cat20Guard_6_6_4.json +30 -30
- package/dist/artifacts/cat20/cat20Guard_6_6_4.scrypt +21 -21
- package/dist/artifacts/cat20/cat20StateLib.json +22 -22
- package/dist/artifacts/cat20/cat20StateLib.scrypt +5 -5
- package/dist/artifacts/cat20/minters/cat20ClosedMinter.json +34 -34
- package/dist/artifacts/cat20/minters/cat20ClosedMinter.scrypt +22 -22
- package/dist/artifacts/cat20/minters/cat20OpenMinter.json +34 -34
- package/dist/artifacts/cat20/minters/cat20OpenMinter.scrypt +18 -18
- package/dist/artifacts/cat20/types.json +5 -5
- package/dist/artifacts/cat20/types.scrypt +5 -5
- package/dist/artifacts/cat721/cat721.json +34 -34
- package/dist/artifacts/cat721/cat721.scrypt +18 -18
- package/dist/artifacts/cat721/cat721GuardStateLib.json +21 -21
- package/dist/artifacts/cat721/cat721GuardStateLib.scrypt +5 -5
- package/dist/artifacts/cat721/cat721Guard_12_12_2.json +29 -29
- package/dist/artifacts/cat721/cat721Guard_12_12_2.scrypt +18 -18
- package/dist/artifacts/cat721/cat721Guard_12_12_4.json +29 -29
- package/dist/artifacts/cat721/cat721Guard_12_12_4.scrypt +18 -18
- package/dist/artifacts/cat721/cat721Guard_6_6_2.json +29 -29
- package/dist/artifacts/cat721/cat721Guard_6_6_2.scrypt +18 -18
- package/dist/artifacts/cat721/cat721Guard_6_6_4.json +29 -29
- package/dist/artifacts/cat721/cat721Guard_6_6_4.scrypt +18 -18
- package/dist/artifacts/cat721/cat721StateLib.json +22 -22
- package/dist/artifacts/cat721/cat721StateLib.scrypt +5 -5
- package/dist/artifacts/cat721/minters/cat721ClosedMinter.json +34 -34
- package/dist/artifacts/cat721/minters/cat721ClosedMinter.scrypt +18 -18
- package/dist/artifacts/cat721/minters/cat721OpenMintInfo.json +5 -5
- package/dist/artifacts/cat721/minters/cat721OpenMintInfo.scrypt +4 -4
- package/dist/artifacts/cat721/minters/cat721OpenMinter.json +39 -39
- package/dist/artifacts/cat721/minters/cat721OpenMinter.scrypt +22 -22
- package/dist/artifacts/cat721/minters/cat721OpenMinterMerkleTree.json +19 -19
- package/dist/artifacts/cat721/minters/cat721OpenMinterMerkleTree.scrypt +6 -6
- package/dist/artifacts/cat721/types.json +5 -5
- package/dist/artifacts/cat721/types.scrypt +5 -5
- package/dist/artifacts/constants.json +2 -2
- package/dist/artifacts/constants.scrypt +1 -1
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/backtrace.scrypt +16 -12
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/contextUtils.scrypt +16 -16
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stateUtils.scrypt +1 -1
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stdUtils.scrypt +12 -12
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txHashPreimageUtils.scrypt +7 -7
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txUtils.scrypt +12 -12
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/types/structs.scrypt +8 -8
- package/dist/artifacts/types.json +2 -2
- package/dist/artifacts/types.scrypt +2 -2
- package/dist/artifacts/utils/ownerUtils.json +14 -14
- package/dist/artifacts/utils/ownerUtils.scrypt +3 -3
- package/dist/artifacts/utils/safeMath.json +14 -14
- package/dist/artifacts/utils/safeMath.scrypt +1 -1
- package/dist/cjs/contracts/cat20/cat20.js +6 -6
- package/dist/cjs/contracts/cat20/cat20.js.map +1 -1
- package/dist/cjs/contracts/cat20/cat20Admin.js +6 -6
- package/dist/cjs/contracts/cat20/cat20Admin.js.map +1 -1
- package/dist/cjs/contracts/cat20/cat20GuardStateLib.js +10 -10
- package/dist/cjs/contracts/cat20/cat20GuardStateLib.js.map +1 -1
- package/dist/cjs/contracts/cat20/cat20Guard_12_12_2.js +29 -29
- package/dist/cjs/contracts/cat20/cat20Guard_12_12_2.js.map +1 -1
- package/dist/cjs/contracts/cat20/cat20Guard_12_12_4.js +29 -29
- package/dist/cjs/contracts/cat20/cat20Guard_12_12_4.js.map +1 -1
- package/dist/cjs/contracts/cat20/cat20Guard_6_6_2.js +29 -29
- package/dist/cjs/contracts/cat20/cat20Guard_6_6_2.js.map +1 -1
- package/dist/cjs/contracts/cat20/cat20Guard_6_6_4.js +29 -29
- package/dist/cjs/contracts/cat20/cat20Guard_6_6_4.js.map +1 -1
- package/dist/cjs/contracts/cat20/cat20StateLib.js +2 -2
- package/dist/cjs/contracts/cat20/cat20StateLib.js.map +1 -1
- package/dist/cjs/contracts/cat20/minters/cat20ClosedMinter.js +7 -7
- package/dist/cjs/contracts/cat20/minters/cat20ClosedMinter.js.map +1 -1
- package/dist/cjs/contracts/cat20/minters/cat20OpenMinter.js +6 -6
- package/dist/cjs/contracts/cat20/minters/cat20OpenMinter.js.map +1 -1
- package/dist/cjs/contracts/cat721/cat721.js +8 -8
- package/dist/cjs/contracts/cat721/cat721.js.map +1 -1
- package/dist/cjs/contracts/cat721/cat721GuardStateLib.js +8 -8
- package/dist/cjs/contracts/cat721/cat721GuardStateLib.js.map +1 -1
- package/dist/cjs/contracts/cat721/cat721Guard_12_12_2.js +24 -24
- package/dist/cjs/contracts/cat721/cat721Guard_12_12_2.js.map +1 -1
- package/dist/cjs/contracts/cat721/cat721Guard_12_12_4.js +24 -24
- package/dist/cjs/contracts/cat721/cat721Guard_12_12_4.js.map +1 -1
- package/dist/cjs/contracts/cat721/cat721Guard_6_6_2.js +24 -24
- package/dist/cjs/contracts/cat721/cat721Guard_6_6_2.js.map +1 -1
- package/dist/cjs/contracts/cat721/cat721Guard_6_6_4.js +24 -24
- package/dist/cjs/contracts/cat721/cat721Guard_6_6_4.js.map +1 -1
- package/dist/cjs/contracts/cat721/cat721StateLib.js +2 -2
- package/dist/cjs/contracts/cat721/cat721StateLib.js.map +1 -1
- package/dist/cjs/contracts/cat721/minters/cat721ClosedMinter.js +9 -9
- package/dist/cjs/contracts/cat721/minters/cat721ClosedMinter.js.map +1 -1
- package/dist/cjs/contracts/cat721/minters/cat721OpenMinter.js +14 -14
- package/dist/cjs/contracts/cat721/minters/cat721OpenMinter.js.map +1 -1
- package/dist/cjs/contracts/cat721/minters/cat721OpenMinterMerkleTree.js +4 -4
- package/dist/cjs/contracts/cat721/minters/cat721OpenMinterMerkleTree.js.map +1 -1
- package/dist/cjs/contracts/index.js +32 -32
- package/dist/cjs/contracts/index.js.map +1 -1
- package/dist/cjs/contracts/utils/ownerUtils.js +4 -4
- package/dist/cjs/contracts/utils/ownerUtils.js.map +1 -1
- package/dist/cjs/features/cat20/admin/burnByAdmin.js +32 -40
- package/dist/cjs/features/cat20/admin/burnByAdmin.js.map +1 -1
- package/dist/cjs/features/cat20/admin/transferOwnership.js +9 -14
- package/dist/cjs/features/cat20/admin/transferOwnership.js.map +1 -1
- package/dist/cjs/features/cat20/burn/burn.js +28 -26
- package/dist/cjs/features/cat20/burn/burn.js.map +1 -1
- package/dist/cjs/features/cat20/deploy/closedMinter.js +38 -30
- package/dist/cjs/features/cat20/deploy/closedMinter.js.map +1 -1
- package/dist/cjs/features/cat20/deploy/openMinter.js +39 -28
- package/dist/cjs/features/cat20/deploy/openMinter.js.map +1 -1
- package/dist/cjs/features/cat20/index.js +34 -31
- package/dist/cjs/features/cat20/index.js.map +1 -1
- package/dist/cjs/features/cat20/mint/closedMinter.js +21 -24
- package/dist/cjs/features/cat20/mint/closedMinter.js.map +1 -1
- package/dist/cjs/features/cat20/mint/openMinter.js +11 -11
- package/dist/cjs/features/cat20/mint/openMinter.js.map +1 -1
- package/dist/cjs/features/cat20/send/contractSend.js +39 -41
- package/dist/cjs/features/cat20/send/contractSend.js.map +1 -1
- package/dist/cjs/features/cat20/send/mergeSend.js +38 -0
- package/dist/cjs/features/cat20/send/mergeSend.js.map +1 -0
- package/dist/cjs/features/cat20/send/singleSend.js +34 -35
- package/dist/cjs/features/cat20/send/singleSend.js.map +1 -1
- package/dist/cjs/features/cat721/burn/burn.js +24 -25
- package/dist/cjs/features/cat721/burn/burn.js.map +1 -1
- package/dist/cjs/features/cat721/deploy/cat721ClosedMinter.js +28 -20
- package/dist/cjs/features/cat721/deploy/cat721ClosedMinter.js.map +1 -1
- package/dist/cjs/features/cat721/deploy/cat721OpenMinter.js +27 -19
- package/dist/cjs/features/cat721/deploy/cat721OpenMinter.js.map +1 -1
- package/dist/cjs/features/cat721/index.js +19 -19
- package/dist/cjs/features/cat721/index.js.map +1 -1
- package/dist/cjs/features/cat721/mint/cat721ClosedMinter.js +16 -16
- package/dist/cjs/features/cat721/mint/cat721ClosedMinter.js.map +1 -1
- package/dist/cjs/features/cat721/mint/cat721OpenMinter.js +25 -22
- package/dist/cjs/features/cat721/mint/cat721OpenMinter.js.map +1 -1
- package/dist/cjs/features/cat721/mint/nft.js +8 -7
- package/dist/cjs/features/cat721/mint/nft.js.map +1 -1
- package/dist/cjs/features/cat721/send/singleSend.js +30 -31
- package/dist/cjs/features/cat721/send/singleSend.js.map +1 -1
- package/dist/cjs/features/index.js +13 -13
- package/dist/cjs/features/index.js.map +1 -1
- package/dist/cjs/index.js +26 -26
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/cat721OPenMinterMerkleTreeData.js +5 -5
- package/dist/cjs/lib/cat721OPenMinterMerkleTreeData.js.map +1 -1
- package/dist/cjs/lib/index.js +3 -3
- package/dist/cjs/lib/index.js.map +1 -1
- package/dist/cjs/lib/metadata.js +1 -14
- package/dist/cjs/lib/metadata.js.map +1 -1
- package/dist/cjs/typeConstants.js +1 -0
- package/dist/cjs/typeConstants.js.map +1 -1
- package/dist/cjs/utils/contractPeripheral.js +111 -111
- package/dist/cjs/utils/contractPeripheral.js.map +1 -1
- package/dist/cjs/utils/index.js +42 -3
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/loadAllArtifacts.js +44 -44
- package/dist/cjs/utils/loadAllArtifacts.js.map +1 -1
- package/dist/esm/contracts/cat20/cat20.js +3 -3
- package/dist/esm/contracts/cat20/cat20.js.map +1 -1
- package/dist/esm/contracts/cat20/cat20Admin.js +2 -2
- package/dist/esm/contracts/cat20/cat20Admin.js.map +1 -1
- package/dist/esm/contracts/cat20/cat20GuardStateLib.js +1 -1
- package/dist/esm/contracts/cat20/cat20GuardStateLib.js.map +1 -1
- package/dist/esm/contracts/cat20/cat20Guard_12_12_2.js +5 -5
- package/dist/esm/contracts/cat20/cat20Guard_12_12_2.js.map +1 -1
- package/dist/esm/contracts/cat20/cat20Guard_12_12_4.js +5 -5
- package/dist/esm/contracts/cat20/cat20Guard_12_12_4.js.map +1 -1
- package/dist/esm/contracts/cat20/cat20Guard_6_6_2.js +5 -5
- package/dist/esm/contracts/cat20/cat20Guard_6_6_2.js.map +1 -1
- package/dist/esm/contracts/cat20/cat20Guard_6_6_4.js +5 -5
- package/dist/esm/contracts/cat20/cat20Guard_6_6_4.js.map +1 -1
- package/dist/esm/contracts/cat20/cat20StateLib.js +1 -1
- package/dist/esm/contracts/cat20/cat20StateLib.js.map +1 -1
- package/dist/esm/contracts/cat20/minters/cat20ClosedMinter.js +3 -3
- package/dist/esm/contracts/cat20/minters/cat20ClosedMinter.js.map +1 -1
- package/dist/esm/contracts/cat20/minters/cat20OpenMinter.js +3 -3
- package/dist/esm/contracts/cat20/minters/cat20OpenMinter.js.map +1 -1
- package/dist/esm/contracts/cat721/cat721.js +4 -4
- package/dist/esm/contracts/cat721/cat721.js.map +1 -1
- package/dist/esm/contracts/cat721/cat721GuardStateLib.js +1 -1
- package/dist/esm/contracts/cat721/cat721GuardStateLib.js.map +1 -1
- package/dist/esm/contracts/cat721/cat721Guard_12_12_2.js +4 -4
- package/dist/esm/contracts/cat721/cat721Guard_12_12_2.js.map +1 -1
- package/dist/esm/contracts/cat721/cat721Guard_12_12_4.js +4 -4
- package/dist/esm/contracts/cat721/cat721Guard_12_12_4.js.map +1 -1
- package/dist/esm/contracts/cat721/cat721Guard_6_6_2.js +4 -4
- package/dist/esm/contracts/cat721/cat721Guard_6_6_2.js.map +1 -1
- package/dist/esm/contracts/cat721/cat721Guard_6_6_4.js +4 -4
- package/dist/esm/contracts/cat721/cat721Guard_6_6_4.js.map +1 -1
- package/dist/esm/contracts/cat721/cat721StateLib.js +1 -1
- package/dist/esm/contracts/cat721/cat721StateLib.js.map +1 -1
- package/dist/esm/contracts/cat721/minters/cat721ClosedMinter.js +4 -4
- package/dist/esm/contracts/cat721/minters/cat721ClosedMinter.js.map +1 -1
- package/dist/esm/contracts/cat721/minters/cat721OpenMinter.js +6 -6
- package/dist/esm/contracts/cat721/minters/cat721OpenMinter.js.map +1 -1
- package/dist/esm/contracts/cat721/minters/cat721OpenMinterMerkleTree.js +2 -2
- package/dist/esm/contracts/cat721/minters/cat721OpenMinterMerkleTree.js.map +1 -1
- package/dist/esm/contracts/index.js +32 -32
- package/dist/esm/contracts/index.js.map +1 -1
- package/dist/esm/contracts/utils/ownerUtils.js +1 -1
- package/dist/esm/contracts/utils/ownerUtils.js.map +1 -1
- package/dist/esm/features/cat20/admin/burnByAdmin.js +14 -21
- package/dist/esm/features/cat20/admin/burnByAdmin.js.map +1 -1
- package/dist/esm/features/cat20/admin/transferOwnership.js +8 -12
- package/dist/esm/features/cat20/admin/transferOwnership.js.map +1 -1
- package/dist/esm/features/cat20/burn/burn.js +15 -12
- package/dist/esm/features/cat20/burn/burn.js.map +1 -1
- package/dist/esm/features/cat20/deploy/closedMinter.js +26 -17
- package/dist/esm/features/cat20/deploy/closedMinter.js.map +1 -1
- package/dist/esm/features/cat20/deploy/openMinter.js +26 -14
- package/dist/esm/features/cat20/deploy/openMinter.js.map +1 -1
- package/dist/esm/features/cat20/index.js +13 -12
- package/dist/esm/features/cat20/index.js.map +1 -1
- package/dist/esm/features/cat20/mint/closedMinter.js +11 -13
- package/dist/esm/features/cat20/mint/closedMinter.js.map +1 -1
- package/dist/esm/features/cat20/mint/openMinter.js +8 -7
- package/dist/esm/features/cat20/mint/openMinter.js.map +1 -1
- package/dist/esm/features/cat20/send/contractSend.js +11 -12
- package/dist/esm/features/cat20/send/contractSend.js.map +1 -1
- package/dist/esm/features/cat20/send/mergeSend.js +34 -0
- package/dist/esm/features/cat20/send/mergeSend.js.map +1 -0
- package/dist/esm/features/cat20/send/singleSend.js +11 -11
- package/dist/esm/features/cat20/send/singleSend.js.map +1 -1
- package/dist/esm/features/cat721/burn/burn.js +11 -11
- package/dist/esm/features/cat721/burn/burn.js.map +1 -1
- package/dist/esm/features/cat721/deploy/cat721ClosedMinter.js +21 -12
- package/dist/esm/features/cat721/deploy/cat721ClosedMinter.js.map +1 -1
- package/dist/esm/features/cat721/deploy/cat721OpenMinter.js +21 -12
- package/dist/esm/features/cat721/deploy/cat721OpenMinter.js.map +1 -1
- package/dist/esm/features/cat721/index.js +8 -8
- package/dist/esm/features/cat721/index.js.map +1 -1
- package/dist/esm/features/cat721/mint/cat721ClosedMinter.js +10 -9
- package/dist/esm/features/cat721/mint/cat721ClosedMinter.js.map +1 -1
- package/dist/esm/features/cat721/mint/cat721OpenMinter.js +17 -13
- package/dist/esm/features/cat721/mint/cat721OpenMinter.js.map +1 -1
- package/dist/esm/features/cat721/mint/nft.js +7 -5
- package/dist/esm/features/cat721/mint/nft.js.map +1 -1
- package/dist/esm/features/cat721/send/singleSend.js +8 -8
- package/dist/esm/features/cat721/send/singleSend.js.map +1 -1
- package/dist/esm/features/index.js +5 -5
- package/dist/esm/features/index.js.map +1 -1
- package/dist/esm/index.js +10 -10
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/cat721OPenMinterMerkleTreeData.js +1 -1
- package/dist/esm/lib/cat721OPenMinterMerkleTreeData.js.map +1 -1
- package/dist/esm/lib/index.js +3 -3
- package/dist/esm/lib/index.js.map +1 -1
- package/dist/esm/lib/metadata.js +1 -14
- package/dist/esm/lib/metadata.js.map +1 -1
- package/dist/esm/typeConstants.js +1 -0
- package/dist/esm/typeConstants.js.map +1 -1
- package/dist/esm/utils/contractPeripheral.js +21 -21
- package/dist/esm/utils/contractPeripheral.js.map +1 -1
- package/dist/esm/utils/index.js +39 -2
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/loadAllArtifacts.js +44 -44
- package/dist/esm/utils/loadAllArtifacts.js.map +1 -1
- package/dist/types/contracts/cat20/cat20.d.ts +3 -3
- package/dist/types/contracts/cat20/cat20.d.ts.map +1 -1
- package/dist/types/contracts/cat20/cat20Admin.d.ts +1 -1
- package/dist/types/contracts/cat20/cat20Admin.d.ts.map +1 -1
- package/dist/types/contracts/cat20/cat20GuardStateLib.d.ts +2 -2
- package/dist/types/contracts/cat20/cat20GuardStateLib.d.ts.map +1 -1
- package/dist/types/contracts/cat20/cat20Guard_12_12_2.d.ts +3 -3
- package/dist/types/contracts/cat20/cat20Guard_12_12_2.d.ts.map +1 -1
- package/dist/types/contracts/cat20/cat20Guard_12_12_4.d.ts +3 -3
- package/dist/types/contracts/cat20/cat20Guard_12_12_4.d.ts.map +1 -1
- package/dist/types/contracts/cat20/cat20Guard_6_6_2.d.ts +3 -3
- package/dist/types/contracts/cat20/cat20Guard_6_6_2.d.ts.map +1 -1
- package/dist/types/contracts/cat20/cat20Guard_6_6_4.d.ts +3 -3
- package/dist/types/contracts/cat20/cat20Guard_6_6_4.d.ts.map +1 -1
- package/dist/types/contracts/cat20/cat20StateLib.d.ts +1 -1
- package/dist/types/contracts/cat20/cat20StateLib.d.ts.map +1 -1
- package/dist/types/contracts/cat20/minters/cat20ClosedMinter.d.ts +1 -1
- package/dist/types/contracts/cat20/minters/cat20ClosedMinter.d.ts.map +1 -1
- package/dist/types/contracts/cat20/minters/cat20ClosedMinterMetadata.d.ts +1 -1
- package/dist/types/contracts/cat20/minters/cat20ClosedMinterMetadata.d.ts.map +1 -1
- package/dist/types/contracts/cat20/minters/cat20OpenMinter.d.ts +1 -1
- package/dist/types/contracts/cat20/minters/cat20OpenMinter.d.ts.map +1 -1
- package/dist/types/contracts/cat20/minters/cat20OpenMinterMetadata.d.ts +1 -1
- package/dist/types/contracts/cat20/minters/cat20OpenMinterMetadata.d.ts.map +1 -1
- package/dist/types/contracts/cat20/types.d.ts +1 -1
- package/dist/types/contracts/cat20/types.d.ts.map +1 -1
- package/dist/types/contracts/cat721/cat721.d.ts +3 -3
- package/dist/types/contracts/cat721/cat721.d.ts.map +1 -1
- package/dist/types/contracts/cat721/cat721GuardStateLib.d.ts +2 -2
- package/dist/types/contracts/cat721/cat721GuardStateLib.d.ts.map +1 -1
- package/dist/types/contracts/cat721/cat721Guard_12_12_2.d.ts +2 -2
- package/dist/types/contracts/cat721/cat721Guard_12_12_2.d.ts.map +1 -1
- package/dist/types/contracts/cat721/cat721Guard_12_12_4.d.ts +2 -2
- package/dist/types/contracts/cat721/cat721Guard_12_12_4.d.ts.map +1 -1
- package/dist/types/contracts/cat721/cat721Guard_6_6_2.d.ts +2 -2
- package/dist/types/contracts/cat721/cat721Guard_6_6_2.d.ts.map +1 -1
- package/dist/types/contracts/cat721/cat721Guard_6_6_4.d.ts +2 -2
- package/dist/types/contracts/cat721/cat721Guard_6_6_4.d.ts.map +1 -1
- package/dist/types/contracts/cat721/cat721StateLib.d.ts +1 -1
- package/dist/types/contracts/cat721/cat721StateLib.d.ts.map +1 -1
- package/dist/types/contracts/cat721/minters/cat721ClosedMinter.d.ts +1 -1
- package/dist/types/contracts/cat721/minters/cat721ClosedMinter.d.ts.map +1 -1
- package/dist/types/contracts/cat721/minters/cat721ClosedMinterMetadata.d.ts +1 -1
- package/dist/types/contracts/cat721/minters/cat721ClosedMinterMetadata.d.ts.map +1 -1
- package/dist/types/contracts/cat721/minters/cat721OpenMinter.d.ts +2 -2
- package/dist/types/contracts/cat721/minters/cat721OpenMinter.d.ts.map +1 -1
- package/dist/types/contracts/cat721/minters/cat721OpenMinterMerkleTree.d.ts +1 -1
- package/dist/types/contracts/cat721/minters/cat721OpenMinterMerkleTree.d.ts.map +1 -1
- package/dist/types/contracts/cat721/minters/cat721OpenMinterMetadata.d.ts +1 -1
- package/dist/types/contracts/cat721/minters/cat721OpenMinterMetadata.d.ts.map +1 -1
- package/dist/types/contracts/cat721/types.d.ts +1 -1
- package/dist/types/contracts/cat721/types.d.ts.map +1 -1
- package/dist/types/contracts/index.d.ts +40 -40
- package/dist/types/contracts/index.d.ts.map +1 -1
- package/dist/types/contracts/types.d.ts +1 -1
- package/dist/types/contracts/types.d.ts.map +1 -1
- package/dist/types/features/cat20/admin/burnByAdmin.d.ts +12 -3
- package/dist/types/features/cat20/admin/burnByAdmin.d.ts.map +1 -1
- package/dist/types/features/cat20/admin/transferOwnership.d.ts +8 -3
- package/dist/types/features/cat20/admin/transferOwnership.d.ts.map +1 -1
- package/dist/types/features/cat20/burn/burn.d.ts +9 -2
- package/dist/types/features/cat20/burn/burn.d.ts.map +1 -1
- package/dist/types/features/cat20/deploy/closedMinter.d.ts +12 -5
- package/dist/types/features/cat20/deploy/closedMinter.d.ts.map +1 -1
- package/dist/types/features/cat20/deploy/openMinter.d.ts +14 -6
- package/dist/types/features/cat20/deploy/openMinter.d.ts.map +1 -1
- package/dist/types/features/cat20/index.d.ts +13 -12
- package/dist/types/features/cat20/index.d.ts.map +1 -1
- package/dist/types/features/cat20/mint/closedMinter.d.ts +9 -3
- package/dist/types/features/cat20/mint/closedMinter.d.ts.map +1 -1
- package/dist/types/features/cat20/mint/openMinter.d.ts +8 -3
- package/dist/types/features/cat20/mint/openMinter.d.ts.map +1 -1
- package/dist/types/features/cat20/send/contractSend.d.ts +16 -4
- package/dist/types/features/cat20/send/contractSend.d.ts.map +1 -1
- package/dist/types/features/cat20/send/mergeSend.d.ts +24 -0
- package/dist/types/features/cat20/send/mergeSend.d.ts.map +1 -0
- package/dist/types/features/cat20/send/singleSend.d.ts +17 -5
- package/dist/types/features/cat20/send/singleSend.d.ts.map +1 -1
- package/dist/types/features/cat721/burn/burn.d.ts +9 -2
- package/dist/types/features/cat721/burn/burn.d.ts.map +1 -1
- package/dist/types/features/cat721/deploy/cat721ClosedMinter.d.ts +17 -5
- package/dist/types/features/cat721/deploy/cat721ClosedMinter.d.ts.map +1 -1
- package/dist/types/features/cat721/deploy/cat721OpenMinter.d.ts +18 -6
- package/dist/types/features/cat721/deploy/cat721OpenMinter.d.ts.map +1 -1
- package/dist/types/features/cat721/index.d.ts +8 -8
- package/dist/types/features/cat721/index.d.ts.map +1 -1
- package/dist/types/features/cat721/mint/cat721ClosedMinter.d.ts +15 -4
- package/dist/types/features/cat721/mint/cat721ClosedMinter.d.ts.map +1 -1
- package/dist/types/features/cat721/mint/cat721OpenMinter.d.ts +15 -4
- package/dist/types/features/cat721/mint/cat721OpenMinter.d.ts.map +1 -1
- package/dist/types/features/cat721/mint/nft.d.ts +15 -5
- package/dist/types/features/cat721/mint/nft.d.ts.map +1 -1
- package/dist/types/features/cat721/send/singleSend.d.ts +12 -4
- package/dist/types/features/cat721/send/singleSend.d.ts.map +1 -1
- package/dist/types/features/index.d.ts +5 -5
- package/dist/types/features/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +9 -9
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lib/cat721OPenMinterMerkleTreeData.d.ts +1 -1
- package/dist/types/lib/cat721OPenMinterMerkleTreeData.d.ts.map +1 -1
- package/dist/types/lib/index.d.ts +2 -2
- package/dist/types/lib/index.d.ts.map +1 -1
- package/dist/types/lib/metadata.d.ts +2 -2
- package/dist/types/lib/metadata.d.ts.map +1 -1
- package/dist/types/typeConstants.d.ts +2 -1
- package/dist/types/typeConstants.d.ts.map +1 -1
- package/dist/types/utils/contractPeripheral.d.ts +7 -7
- package/dist/types/utils/contractPeripheral.d.ts.map +1 -1
- package/dist/types/utils/index.d.ts +24 -1
- package/dist/types/utils/index.d.ts.map +1 -1
- package/package.json +7 -6
- package/scrypt.index.json +5 -5
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.burnByAdmin = void 0;
|
|
4
4
|
const scrypt_ts_opcat_1 = require("@opcat-labs/scrypt-ts-opcat");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
5
|
+
const cat20_js_1 = require("../../../contracts/cat20/cat20.js");
|
|
6
|
+
const constants_js_1 = require("../../../contracts/constants.js");
|
|
7
|
+
const typeConstants_js_1 = require("../../../typeConstants.js");
|
|
8
|
+
const index_js_1 = require("../../../utils/index.js");
|
|
9
|
+
const contractPeripheral_js_1 = require("../../../utils/contractPeripheral.js");
|
|
10
|
+
const cat20StateLib_js_1 = require("../../../contracts/cat20/cat20StateLib.js");
|
|
11
|
+
const index_js_2 = require("../../../contracts/index.js");
|
|
12
12
|
/**
|
|
13
13
|
* Burns CAT20 tokens using admin privileges without requiring owner approval.
|
|
14
14
|
*
|
|
@@ -73,30 +73,30 @@ const contracts_1 = require("../../../contracts");
|
|
|
73
73
|
* @see {@link CAT20Admin} for admin contract details
|
|
74
74
|
* @see {@link burn} for user-initiated token burning with owner approval
|
|
75
75
|
*/
|
|
76
|
-
async function
|
|
77
|
-
if (inputTokenUtxos.length + 2 >
|
|
78
|
-
throw new Error(`Too many inputs that exceed the maximum input limit of ${
|
|
76
|
+
exports.burnByAdmin = (0, index_js_1.createFeatureWithDryRun)(async function (signer, cat20Admin, adminUtxo, provider, minterScriptHash, inputTokenUtxos, feeRate, hasAdmin = false, adminScriptHash = constants_js_1.NULL_ADMIN_SCRIPT_HASH) {
|
|
77
|
+
if (inputTokenUtxos.length + 2 > constants_js_1.TX_INPUT_COUNT_MAX) {
|
|
78
|
+
throw new Error(`Too many inputs that exceed the maximum input limit of ${constants_js_1.TX_INPUT_COUNT_MAX}`);
|
|
79
79
|
}
|
|
80
80
|
const changeAddress = await signer.getAddress();
|
|
81
81
|
// we use the p2pkh contract as the contract owner
|
|
82
|
-
const expectContractOwner = (0,
|
|
82
|
+
const expectContractOwner = (0, index_js_1.toTokenOwnerAddress)(changeAddress, true);
|
|
83
83
|
let utxos = await provider.getUtxos(changeAddress);
|
|
84
|
-
utxos = (0,
|
|
84
|
+
utxos = (0, index_js_1.filterFeeUtxos)(utxos).slice(0, constants_js_1.TX_INPUT_COUNT_MAX);
|
|
85
85
|
if (utxos.length === 0) {
|
|
86
86
|
throw new Error('Insufficient satoshis input amount');
|
|
87
87
|
}
|
|
88
|
-
const guardScriptHashes =
|
|
89
|
-
const cat20 = new
|
|
88
|
+
const guardScriptHashes = contractPeripheral_js_1.CAT20GuardPeripheral.getGuardVariantScriptHashes();
|
|
89
|
+
const cat20 = new cat20_js_1.CAT20(minterScriptHash, guardScriptHashes, hasAdmin, adminScriptHash);
|
|
90
90
|
const cat20Script = cat20.lockingScript.toHex();
|
|
91
|
-
inputTokenUtxos = (0,
|
|
92
|
-
const inputTokenStates = inputTokenUtxos.map((utxo) =>
|
|
91
|
+
inputTokenUtxos = (0, index_js_1.normalizeUtxoScripts)(inputTokenUtxos, cat20Script);
|
|
92
|
+
const inputTokenStates = inputTokenUtxos.map((utxo) => cat20_js_1.CAT20.deserializeState(utxo.data));
|
|
93
93
|
inputTokenStates.map((state, index) => {
|
|
94
94
|
if (state.ownerAddr != expectContractOwner) {
|
|
95
95
|
throw new Error(`the ${index} input token owner=${state.ownerAddr} is not ${expectContractOwner}`);
|
|
96
96
|
}
|
|
97
97
|
});
|
|
98
98
|
const changeTokenOutputIndex = -1;
|
|
99
|
-
const { guard, guardState, outputTokens: _outputTokens, txInputCountMax, txOutputCountMax } =
|
|
99
|
+
const { guard, guardState, outputTokens: _outputTokens, txInputCountMax, txOutputCountMax } = contractPeripheral_js_1.CAT20GuardPeripheral.createBurnGuard(inputTokenUtxos.map((utxo, index) => ({
|
|
100
100
|
token: utxo,
|
|
101
101
|
inputIndex: index,
|
|
102
102
|
})));
|
|
@@ -105,22 +105,19 @@ async function burnByAdmin(signer, cat20Admin, adminUtxo, provider, minterScript
|
|
|
105
105
|
guard.state = guardState;
|
|
106
106
|
const guardPsbt = new scrypt_ts_opcat_1.ExtPsbt({ network: await provider.getNetwork() })
|
|
107
107
|
.spendUTXO(utxos)
|
|
108
|
-
.addContractOutput(guard,
|
|
108
|
+
.addContractOutput(guard, typeConstants_js_1.Postage.GUARD_POSTAGE)
|
|
109
109
|
.change(changeAddress, feeRate)
|
|
110
110
|
.seal();
|
|
111
111
|
const signedGuardPsbt = await signer.signPsbt(guardPsbt.toHex(), guardPsbt.psbtOptions());
|
|
112
112
|
guardPsbt.combine(scrypt_ts_opcat_1.ExtPsbt.fromHex(signedGuardPsbt));
|
|
113
113
|
guardPsbt.finalizeAllInputs();
|
|
114
|
-
const backtraces = await contractPeripheral_1.CAT20GuardPeripheral.getBackTraceInfo(minterScriptHash, inputTokenUtxos, provider, hasAdmin, adminScriptHash);
|
|
115
114
|
const guardUtxo = guardPsbt.getUtxo(0);
|
|
116
115
|
const feeUtxo = guardPsbt.getChangeUTXO();
|
|
117
|
-
const inputTokens = inputTokenUtxos.map((utxo
|
|
118
|
-
...utxo,
|
|
119
|
-
txHashPreimage: (0, scrypt_ts_opcat_1.toHex)(new scrypt_ts_opcat_1.Transaction(backtraces[index].prevTxHex).toTxHashPreimage()),
|
|
120
|
-
}));
|
|
116
|
+
const inputTokens = inputTokenUtxos.map((utxo) => new cat20_js_1.CAT20(minterScriptHash, guardScriptHashes, true, adminScriptHash).bindToUtxo(utxo));
|
|
121
117
|
/// we use the fee input as contract input;
|
|
122
118
|
const sendPsbt = new scrypt_ts_opcat_1.ExtPsbt({ network: await provider.getNetwork() });
|
|
123
119
|
const guardInputIndex = inputTokens.length;
|
|
120
|
+
const backtraces = await contractPeripheral_js_1.CAT20GuardPeripheral.getBackTraceInfo(minterScriptHash, inputTokenUtxos, provider, hasAdmin, adminScriptHash);
|
|
124
121
|
// Transaction input structure:
|
|
125
122
|
// - Token inputs: [0 to inputTokens.length - 1]
|
|
126
123
|
// - Guard input: inputTokens.length
|
|
@@ -131,7 +128,7 @@ async function burnByAdmin(signer, cat20Admin, adminUtxo, provider, minterScript
|
|
|
131
128
|
for (let index = 0; index < inputTokens.length; index++) {
|
|
132
129
|
sendPsbt.addContractInput(inputTokens[index], (contract) => {
|
|
133
130
|
contract.unlock({
|
|
134
|
-
spendType:
|
|
131
|
+
spendType: index_js_2.SPEND_TYPE_ADMIN_SPEND,
|
|
135
132
|
userPubKey: '',
|
|
136
133
|
userSig: '',
|
|
137
134
|
spendScriptInputIndex: BigInt(adminInputIndex),
|
|
@@ -142,24 +139,25 @@ async function burnByAdmin(signer, cat20Admin, adminUtxo, provider, minterScript
|
|
|
142
139
|
guard.bindToUtxo(guardUtxo);
|
|
143
140
|
sendPsbt.addContractInput(guard, (contract, tx) => {
|
|
144
141
|
const ownerAddrOrScript = (0, scrypt_ts_opcat_1.fill)((0, scrypt_ts_opcat_1.toByteString)(''), txOutputCountMax);
|
|
145
|
-
(0,
|
|
142
|
+
(0, index_js_1.applyFixedArray)(ownerAddrOrScript, tx.txOutputs.map((output, index) => {
|
|
146
143
|
return index < outputTokens.length
|
|
147
144
|
? outputTokens[index].ownerAddr
|
|
148
|
-
:
|
|
145
|
+
: contractPeripheral_js_1.ContractPeripheral.scriptHash((0, scrypt_ts_opcat_1.toHex)(output.script));
|
|
149
146
|
}));
|
|
150
147
|
const outputTokenAmts = (0, scrypt_ts_opcat_1.fill)(BigInt(0), txOutputCountMax);
|
|
151
|
-
(0,
|
|
148
|
+
(0, index_js_1.applyFixedArray)(outputTokenAmts, outputTokens.map((t) => t.amount));
|
|
152
149
|
const tokenScriptIndexArray = (0, scrypt_ts_opcat_1.fill)(-1n, txOutputCountMax);
|
|
153
|
-
(0,
|
|
150
|
+
(0, index_js_1.applyFixedArray)(tokenScriptIndexArray, outputTokens.map(() => 0n));
|
|
154
151
|
const outputSatoshis = (0, scrypt_ts_opcat_1.fill)(0n, txOutputCountMax);
|
|
155
|
-
(0,
|
|
156
|
-
const inputCAT20States = (0, scrypt_ts_opcat_1.fill)(
|
|
157
|
-
(0,
|
|
152
|
+
(0, index_js_1.applyFixedArray)(outputSatoshis, tx.txOutputs.map((output) => output.value));
|
|
153
|
+
const inputCAT20States = (0, scrypt_ts_opcat_1.fill)(cat20StateLib_js_1.CAT20StateLib.create(0n, ''), txInputCountMax);
|
|
154
|
+
(0, index_js_1.applyFixedArray)(inputCAT20States, inputTokenStates);
|
|
158
155
|
const nextStateHashes = (0, scrypt_ts_opcat_1.fill)((0, scrypt_ts_opcat_1.toByteString)(''), txOutputCountMax);
|
|
159
|
-
(0,
|
|
156
|
+
(0, index_js_1.applyFixedArray)(nextStateHashes, tx.txOutputs.map((output) => (0, scrypt_ts_opcat_1.sha256)((0, scrypt_ts_opcat_1.toHex)(output.data))));
|
|
160
157
|
contract.unlock(nextStateHashes, ownerAddrOrScript, outputTokenAmts, tokenScriptIndexArray, outputSatoshis, inputCAT20States, BigInt(tx.data.outputs.length));
|
|
161
158
|
});
|
|
162
159
|
// add admin input
|
|
160
|
+
cat20Admin.bindToUtxo(adminUtxo);
|
|
163
161
|
const pubkey = await signer.getPublicKey();
|
|
164
162
|
const address = await signer.getAddress();
|
|
165
163
|
const spentAdminTxHex = await provider.getRawTransaction(adminUtxo.txId);
|
|
@@ -171,10 +169,6 @@ async function burnByAdmin(signer, cat20Admin, adminUtxo, provider, minterScript
|
|
|
171
169
|
}
|
|
172
170
|
const spentAdminPreTxHex = await provider.getRawTransaction((0, scrypt_ts_opcat_1.toHex)(spentAdminTx.inputs[adminBacktraceInputIndex].prevTxId));
|
|
173
171
|
const backTraceInfo = (0, scrypt_ts_opcat_1.getBackTraceInfo)(spentAdminTxHex, spentAdminPreTxHex, adminBacktraceInputIndex);
|
|
174
|
-
cat20Admin.bindToUtxo({
|
|
175
|
-
...adminUtxo,
|
|
176
|
-
txHashPreimage: (0, scrypt_ts_opcat_1.toHex)(new scrypt_ts_opcat_1.Transaction(spentAdminTxHex).toTxHashPreimage()),
|
|
177
|
-
});
|
|
178
172
|
sendPsbt.addContractInput(cat20Admin, (contract, tx) => {
|
|
179
173
|
// Use the dynamically calculated adminInputIndex (from line 205)
|
|
180
174
|
const sig = tx.getSig(adminInputIndex, {
|
|
@@ -191,13 +185,12 @@ async function burnByAdmin(signer, cat20Admin, adminUtxo, provider, minterScript
|
|
|
191
185
|
sendPsbt.combine(scrypt_ts_opcat_1.ExtPsbt.fromHex(signedSendPsbt));
|
|
192
186
|
sendPsbt.finalizeAllInputs();
|
|
193
187
|
const newCAT20Utxos = outputTokens.map((_, index) => sendPsbt.getUtxo(index));
|
|
194
|
-
const newFeeUtxo = sendPsbt.getChangeUTXO();
|
|
195
188
|
// broadcast
|
|
196
189
|
await provider.broadcast(guardPsbt.extractTransaction().toHex());
|
|
197
190
|
(0, scrypt_ts_opcat_1.markSpent)(provider, guardPsbt.extractTransaction());
|
|
198
191
|
await provider.broadcast(sendPsbt.extractTransaction().toHex());
|
|
199
192
|
(0, scrypt_ts_opcat_1.markSpent)(provider, sendPsbt.extractTransaction());
|
|
200
|
-
|
|
193
|
+
(0, scrypt_ts_opcat_1.addChangeUtxoToProvider)(provider, sendPsbt);
|
|
201
194
|
return {
|
|
202
195
|
sendTxId: sendPsbt.extractTransaction().id,
|
|
203
196
|
guardTxId: guardPsbt.extractTransaction().id,
|
|
@@ -206,6 +199,5 @@ async function burnByAdmin(signer, cat20Admin, adminUtxo, provider, minterScript
|
|
|
206
199
|
newCAT20Utxos,
|
|
207
200
|
changeTokenOutputIndex,
|
|
208
201
|
};
|
|
209
|
-
}
|
|
210
|
-
exports.burnByAdmin = burnByAdmin;
|
|
202
|
+
});
|
|
211
203
|
//# sourceMappingURL=burnByAdmin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"burnByAdmin.js","sourceRoot":"","sources":["../../../../../src/features/cat20/admin/burnByAdmin.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"burnByAdmin.js","sourceRoot":"","sources":["../../../../../src/features/cat20/admin/burnByAdmin.ts"],"names":[],"mappings":";;;AAAA,iEAgBoC;AACpC,gEAAyD;AAEzD,kEAGwC;AACxC,gEAAmD;AACnD,sDAMgC;AAChC,gFAG6C;AAC7C,gFAAyE;AAEzE,0DAAoE;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AACU,QAAA,WAAW,GAAG,IAAA,kCAAuB,EAAC,KAAK,WACtD,MAAc,EACd,UAAsB,EACtB,SAAe,EACf,QAAsC,EACtC,gBAAwB,EACxB,eAAuB,EACvB,OAAe,EACf,WAAoB,KAAK,EACzB,kBAA0B,qCAAsB;IAShD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,GAAG,iCAAkB,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CACb,0DAA0D,iCAAkB,EAAE,CAC/E,CAAA;IACH,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAA;IAC/C,kDAAkD;IAClD,MAAM,mBAAmB,GAAG,IAAA,8BAAmB,EAAC,aAAa,EAAE,IAAI,CAAC,CAAA;IAEpE,IAAI,KAAK,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;IAClD,KAAK,GAAG,IAAA,yBAAc,EAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,iCAAkB,CAAC,CAAA;IAE1D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACvD,CAAC;IAED,MAAM,iBAAiB,GAAG,4CAAoB,CAAC,2BAA2B,EAAE,CAAA;IAC5E,MAAM,KAAK,GAAG,IAAI,gBAAK,CACrB,gBAAgB,EAChB,iBAAiB,EACjB,QAAQ,EACR,eAAe,CAChB,CAAA;IACD,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;IAC/C,eAAe,GAAG,IAAA,+BAAoB,EAAC,eAAe,EAAE,WAAW,CAAC,CAAA;IAEpE,MAAM,gBAAgB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACpD,gBAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAClC,CAAA;IACD,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACpC,IAAI,KAAK,CAAC,SAAS,IAAI,mBAAmB,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CACb,OAAO,KAAK,sBAAsB,KAAK,CAAC,SAAS,WAAW,mBAAmB,EAAE,CAClF,CAAA;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IACF,MAAM,sBAAsB,GAAG,CAAC,CAAC,CAAA;IACjC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,GACzF,4CAAoB,CAAC,eAAe,CAClC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACpC,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC,CACJ,CAAA;IACH,MAAM,YAAY,GAAiB,aAAa,CAAC,MAAM,CACrD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,SAAS,CACN,CAAA;IACjB,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAC3D,KAAK,CAAC,KAAK,GAAG,UAAU,CAAA;IACxB,MAAM,SAAS,GAAG,IAAI,yBAAO,CAAC,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC;SACpE,SAAS,CAAC,KAAK,CAAC;SAChB,iBAAiB,CAAC,KAAK,EAAE,0BAAO,CAAC,aAAa,CAAC;SAC/C,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC;SAC9B,IAAI,EAAE,CAAA;IAET,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,QAAQ,CAC3C,SAAS,CAAC,KAAK,EAAE,EACjB,SAAS,CAAC,WAAW,EAAE,CACxB,CAAA;IACD,SAAS,CAAC,OAAO,CAAC,yBAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAA;IACnD,SAAS,CAAC,iBAAiB,EAAE,CAAA;IAE7B,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IACtC,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,EAAG,CAAA;IAC1C,MAAM,WAAW,GAAY,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACxD,IAAI,gBAAK,CACP,gBAAgB,EAChB,iBAAiB,EACjB,IAAI,EACJ,eAAe,CAChB,CAAC,UAAU,CAAC,IAAI,CAAC,CACnB,CAAA;IAED,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,IAAI,yBAAO,CAAC,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;IAEtE,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAA;IAC1C,MAAM,UAAU,GAAG,MAAM,4CAAoB,CAAC,gBAAgB,CAC5D,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,eAAe,CAChB,CAAA;IAED,+BAA+B;IAC/B,gDAAgD;IAChD,oCAAoC;IACpC,wCAAwC;IACxC,oDAAoD;IACpD,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAA;IAE9C,mBAAmB;IACnB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACxD,QAAQ,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE;YACzD,QAAQ,CAAC,MAAM,CACb;gBACE,SAAS,EAAE,iCAAsB;gBACjC,UAAU,EAAE,EAAY;gBACxB,OAAO,EAAE,EAAS;gBAClB,qBAAqB,EAAE,MAAM,CAAC,eAAe,CAAC;aAC/C,EAED,UAAU,EACV,MAAM,CAAC,eAAe,CAAC,EAEvB,IAAA,kCAAgB,EACd,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,EAC3B,UAAU,CAAC,KAAK,CAAC,CAAC,aAAa,EAC/B,UAAU,CAAC,KAAK,CAAC,CAAC,WAAW,CAC9B,CACF,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,mBAAmB;IACnB,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;IAC3B,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE;QAChD,MAAM,iBAAiB,GAAG,IAAA,sBAAI,EAAC,IAAA,8BAAY,EAAC,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAA;QAClE,IAAA,0BAAe,EACb,iBAAiB,EACjB,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACjC,OAAO,KAAK,GAAG,YAAY,CAAC,MAAM;gBAChC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS;gBAC/B,CAAC,CAAC,0CAAkB,CAAC,UAAU,CAAC,IAAA,uBAAK,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;QACzD,CAAC,CAAC,CACH,CAAA;QACD,MAAM,eAAe,GAAG,IAAA,sBAAI,EAAC,MAAM,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAA;QACzD,IAAA,0BAAe,EACb,eAAe,EACf,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAClC,CAAA;QACD,MAAM,qBAAqB,GAAG,IAAA,sBAAI,EAAC,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAA;QACzD,IAAA,0BAAe,EACb,qBAAqB,EACrB,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAC3B,CAAA;QACD,MAAM,cAAc,GAAG,IAAA,sBAAI,EAAC,EAAE,EAAE,gBAAgB,CAAC,CAAA;QACjD,IAAA,0BAAe,EACb,cAAc,EACd,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAC3C,CAAA;QACD,MAAM,gBAAgB,GAAG,IAAA,sBAAI,EAC3B,gCAAa,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAC5B,eAAe,CAChB,CAAA;QACD,IAAA,0BAAe,EAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAA;QACnD,MAAM,eAAe,GAAG,IAAA,sBAAI,EAAC,IAAA,8BAAY,EAAC,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAA;QAChE,IAAA,0BAAe,EACb,eAAe,EACf,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,wBAAM,EAAC,IAAA,uBAAK,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CACzD,CAAA;QACD,QAAQ,CAAC,MAAM,CACb,eAAsB,EACtB,iBAAwB,EACxB,eAAsB,EACtB,qBAA4B,EAC5B,cAAqB,EACrB,gBAAuB,EACvB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAC/B,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,kBAAkB;IAClB,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;IAChC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,CAAA;IAC1C,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAA;IACzC,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IACxE,MAAM,YAAY,GAAG,IAAI,6BAAW,CAAC,eAAe,CAAC,CAAA;IACrD,2EAA2E;IAC3E,IAAI,wBAAwB,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;IAC7D,IAAI,wBAAwB,GAAG,CAAC,EAAE,CAAC;QACjC,wBAAwB,GAAG,CAAC,CAAA;IAC9B,CAAC;IAED,MAAM,kBAAkB,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CACzD,IAAA,uBAAK,EAAC,YAAY,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,CAC9D,CAAA;IACD,MAAM,aAAa,GAAG,IAAA,kCAAgB,EACpC,eAAe,EACf,kBAAkB,EAClB,wBAAwB,CACzB,CAAA;IACD,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE;QACrD,iEAAiE;QACjE,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE;YACrC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;SAC5B,CAAC,CAAA;QACF,QAAQ,CAAC,qBAAqB,CAAC,IAAA,wBAAM,EAAC,MAAM,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,CAAA;IACpE,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,iBAAiB,CAAC,UAAU,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;IAE1D,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;IACvC,QAAQ,CAAC,IAAI,EAAE,CAAA;IAEf,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,QAAQ,CAC1C,QAAQ,CAAC,KAAK,EAAE,EAChB,QAAQ,CAAC,WAAW,EAAE,CACvB,CAAA;IACD,QAAQ,CAAC,OAAO,CAAC,yBAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAA;IACjD,QAAQ,CAAC,iBAAiB,EAAE,CAAA;IAE5B,MAAM,aAAa,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;IAE7E,YAAY;IACZ,MAAM,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,CAAC,CAAA;IAChE,IAAA,2BAAS,EAAC,QAAQ,EAAE,SAAS,CAAC,kBAAkB,EAAE,CAAC,CAAA;IACnD,MAAM,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,CAAC,CAAA;IAC/D,IAAA,2BAAS,EAAC,QAAQ,EAAE,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAA;IAClD,IAAA,yCAAuB,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAE3C,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,kBAAkB,EAAE,CAAC,EAAE;QAC1C,SAAS,EAAE,SAAS,CAAC,kBAAkB,EAAE,CAAC,EAAE;QAC5C,SAAS;QACT,QAAQ;QACR,aAAa;QACb,sBAAsB;KACvB,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.transferOwnership = void 0;
|
|
4
4
|
const scrypt_ts_opcat_1 = require("@opcat-labs/scrypt-ts-opcat");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
5
|
+
const constants_js_1 = require("../../../contracts/constants.js");
|
|
6
|
+
const index_js_1 = require("../../../utils/index.js");
|
|
7
|
+
const index_js_2 = require("../../../contracts/index.js");
|
|
8
8
|
/**
|
|
9
9
|
* Change CAT20 admin owner in a single transaction.
|
|
10
10
|
* @param signer a signer, such as {@link DefaultSigner} or {@link WalletSigner}
|
|
@@ -15,16 +15,17 @@ const contracts_1 = require("../../../contracts");
|
|
|
15
15
|
* @param feeRate the fee rate for constructing transactions
|
|
16
16
|
* @returns a transferOwnership transaction
|
|
17
17
|
*/
|
|
18
|
-
async function
|
|
18
|
+
exports.transferOwnership = (0, index_js_1.createFeatureWithDryRun)(async function (adminSigner, feeSigner, cat20Admin, adminUtxo, provider, newPubKeyHash, feeRate) {
|
|
19
19
|
const changeAddress = await feeSigner.getAddress();
|
|
20
20
|
let utxos = await provider.getUtxos(changeAddress);
|
|
21
|
-
utxos = (0,
|
|
21
|
+
utxos = (0, index_js_1.filterFeeUtxos)(utxos).slice(0, constants_js_1.TX_INPUT_COUNT_MAX);
|
|
22
22
|
if (utxos.length === 0) {
|
|
23
23
|
throw new Error('Insufficient satoshis input amount');
|
|
24
24
|
}
|
|
25
25
|
/// we use the fee input as contract input;
|
|
26
26
|
const sendPsbt = new scrypt_ts_opcat_1.ExtPsbt({ network: await provider.getNetwork() });
|
|
27
27
|
// add admin input
|
|
28
|
+
cat20Admin.bindToUtxo(adminUtxo);
|
|
28
29
|
const adminPubKey = await adminSigner.getPublicKey();
|
|
29
30
|
const adminAddress = await adminSigner.getAddress();
|
|
30
31
|
const adminTxHex = await provider.getRawTransaction(adminUtxo.txId);
|
|
@@ -35,10 +36,6 @@ async function transferOwnership(adminSigner, feeSigner, cat20Admin, adminUtxo,
|
|
|
35
36
|
}
|
|
36
37
|
const spentAdminPreTxHex = await provider.getRawTransaction((0, scrypt_ts_opcat_1.toHex)(adminTx.inputs[prevAdminInputIndex].prevTxId));
|
|
37
38
|
const backTraceInfo = (0, scrypt_ts_opcat_1.getBackTraceInfo)(adminTxHex, spentAdminPreTxHex, prevAdminInputIndex);
|
|
38
|
-
cat20Admin.bindToUtxo({
|
|
39
|
-
...adminUtxo,
|
|
40
|
-
txHashPreimage: (0, scrypt_ts_opcat_1.toHex)(new scrypt_ts_opcat_1.Transaction(adminTxHex).toTxHashPreimage()),
|
|
41
|
-
});
|
|
42
39
|
sendPsbt.addContractInput(cat20Admin, (contract, tx) => {
|
|
43
40
|
// sign admin input
|
|
44
41
|
const sig = tx.getSig(0, {
|
|
@@ -48,7 +45,7 @@ async function transferOwnership(adminSigner, feeSigner, cat20Admin, adminUtxo,
|
|
|
48
45
|
});
|
|
49
46
|
const newCat20Admin = cat20Admin.next({
|
|
50
47
|
tag: cat20Admin.state.tag,
|
|
51
|
-
adminAddress:
|
|
48
|
+
adminAddress: index_js_2.OwnerUtils.pubKeyHashtoLockingScript(newPubKeyHash),
|
|
52
49
|
});
|
|
53
50
|
sendPsbt.addContractOutput(newCat20Admin, adminUtxo.satoshis);
|
|
54
51
|
// add fee input, also is a contract input to unlock cat20
|
|
@@ -63,15 +60,13 @@ async function transferOwnership(adminSigner, feeSigner, cat20Admin, adminUtxo,
|
|
|
63
60
|
sendPsbt.combine(scrypt_ts_opcat_1.ExtPsbt.fromHex(signedSendPsbt2));
|
|
64
61
|
}
|
|
65
62
|
sendPsbt.finalizeAllInputs();
|
|
66
|
-
const newFeeUtxo = sendPsbt.getChangeUTXO();
|
|
67
63
|
// broadcast
|
|
68
64
|
await provider.broadcast(sendPsbt.extractTransaction().toHex());
|
|
69
65
|
(0, scrypt_ts_opcat_1.markSpent)(provider, sendPsbt.extractTransaction());
|
|
70
|
-
|
|
66
|
+
(0, scrypt_ts_opcat_1.addChangeUtxoToProvider)(provider, sendPsbt);
|
|
71
67
|
return {
|
|
72
68
|
sendTxId: sendPsbt.extractTransaction().id,
|
|
73
69
|
sendPsbt,
|
|
74
70
|
};
|
|
75
|
-
}
|
|
76
|
-
exports.transferOwnership = transferOwnership;
|
|
71
|
+
});
|
|
77
72
|
//# sourceMappingURL=transferOwnership.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transferOwnership.js","sourceRoot":"","sources":["../../../../../src/features/cat20/admin/transferOwnership.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"transferOwnership.js","sourceRoot":"","sources":["../../../../../src/features/cat20/admin/transferOwnership.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.burnToken = void 0;
|
|
4
4
|
const scrypt_ts_opcat_1 = require("@opcat-labs/scrypt-ts-opcat");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
5
|
+
const cat20_js_1 = require("../../../contracts/cat20/cat20.js");
|
|
6
|
+
const cat20StateLib_js_1 = require("../../../contracts/cat20/cat20StateLib.js");
|
|
7
|
+
const constants_js_1 = require("../../../contracts/constants.js");
|
|
8
|
+
const typeConstants_js_1 = require("../../../typeConstants.js");
|
|
9
|
+
const index_js_1 = require("../../../utils/index.js");
|
|
10
|
+
const contractPeripheral_js_1 = require("../../../utils/contractPeripheral.js");
|
|
11
|
+
const index_js_2 = require("../../../contracts/index.js");
|
|
12
12
|
/**
|
|
13
13
|
* Burns a CAT20 token using `CAT20Guard` contract
|
|
14
14
|
* @category Feature
|
|
@@ -21,20 +21,20 @@ const contracts_1 = require("../../../contracts");
|
|
|
21
21
|
* @param adminScriptHash the admin script hash of the CAT20 token
|
|
22
22
|
* @returns the PSBTs for the guard and burn transactions
|
|
23
23
|
*/
|
|
24
|
-
async function
|
|
24
|
+
exports.burnToken = (0, index_js_1.createFeatureWithDryRun)(async function (signer, provider, minterScriptHash, inputTokenUtxos, feeRate, hasAdmin = false, adminScriptHash = constants_js_1.NULL_ADMIN_SCRIPT_HASH) {
|
|
25
25
|
const pubkey = await signer.getPublicKey();
|
|
26
26
|
const changeAddress = await signer.getAddress();
|
|
27
27
|
let utxos = await provider.getUtxos(changeAddress);
|
|
28
|
-
utxos = (0,
|
|
28
|
+
utxos = (0, index_js_1.filterFeeUtxos)(utxos).slice(0, constants_js_1.TX_INPUT_COUNT_MAX);
|
|
29
29
|
if (utxos.length === 0) {
|
|
30
30
|
throw new Error('Insufficient satoshis input amount');
|
|
31
31
|
}
|
|
32
|
-
const guardScriptHashes =
|
|
33
|
-
const cat20 = new
|
|
32
|
+
const guardScriptHashes = contractPeripheral_js_1.CAT20GuardPeripheral.getGuardVariantScriptHashes();
|
|
33
|
+
const cat20 = new cat20_js_1.CAT20(minterScriptHash, guardScriptHashes, hasAdmin, adminScriptHash);
|
|
34
34
|
const cat20Script = cat20.lockingScript.toHex();
|
|
35
|
-
inputTokenUtxos = (0,
|
|
36
|
-
const inputTokenStates = inputTokenUtxos.map((utxo) =>
|
|
37
|
-
const { guard, guardState, txInputCountMax, txOutputCountMax } =
|
|
35
|
+
inputTokenUtxos = (0, index_js_1.normalizeUtxoScripts)(inputTokenUtxos, cat20Script);
|
|
36
|
+
const inputTokenStates = inputTokenUtxos.map((utxo) => cat20_js_1.CAT20.deserializeState(utxo.data));
|
|
37
|
+
const { guard, guardState, txInputCountMax, txOutputCountMax } = contractPeripheral_js_1.CAT20GuardPeripheral.createBurnGuard(inputTokenUtxos.map((utxo, index) => ({
|
|
38
38
|
token: utxo,
|
|
39
39
|
inputIndex: index,
|
|
40
40
|
})));
|
|
@@ -42,7 +42,7 @@ async function burnToken(signer, provider, minterScriptHash, inputTokenUtxos, fe
|
|
|
42
42
|
guard.state = guardState;
|
|
43
43
|
const guardPsbt = new scrypt_ts_opcat_1.ExtPsbt({ network: await provider.getNetwork() })
|
|
44
44
|
.spendUTXO(utxos)
|
|
45
|
-
.addContractOutput(guard,
|
|
45
|
+
.addContractOutput(guard, typeConstants_js_1.Postage.GUARD_POSTAGE)
|
|
46
46
|
.change(changeAddress, feeRate)
|
|
47
47
|
.seal();
|
|
48
48
|
const signedGuardPsbt = await signer.signPsbt(guardPsbt.toHex(), guardPsbt.psbtOptions());
|
|
@@ -50,15 +50,18 @@ async function burnToken(signer, provider, minterScriptHash, inputTokenUtxos, fe
|
|
|
50
50
|
guardPsbt.finalizeAllInputs();
|
|
51
51
|
const guardUtxo = guardPsbt.getUtxo(0);
|
|
52
52
|
const feeUtxo = guardPsbt.getChangeUTXO();
|
|
53
|
-
const backtraces = await
|
|
54
|
-
const inputTokens = inputTokenUtxos.map((utxo, index) => new
|
|
53
|
+
const backtraces = await contractPeripheral_js_1.CAT20GuardPeripheral.getBackTraceInfo(minterScriptHash, inputTokenUtxos, provider, hasAdmin, adminScriptHash);
|
|
54
|
+
const inputTokens = inputTokenUtxos.map((utxo, index) => new cat20_js_1.CAT20(minterScriptHash, guardScriptHashes, hasAdmin, adminScriptHash).bindToUtxo({
|
|
55
|
+
...utxo,
|
|
56
|
+
txHashPreimage: (0, scrypt_ts_opcat_1.toHex)(new scrypt_ts_opcat_1.Transaction(backtraces[index].prevTxHex).toTxHashPreimage())
|
|
57
|
+
}));
|
|
55
58
|
const burnPsbt = new scrypt_ts_opcat_1.ExtPsbt({ network: await provider.getNetwork() });
|
|
56
59
|
const guardInputIndex = inputTokens.length;
|
|
57
60
|
// add token inputs
|
|
58
61
|
for (let index = 0; index < inputTokens.length; index++) {
|
|
59
62
|
burnPsbt.addContractInput(inputTokens[index], (contract, tx) => {
|
|
60
63
|
contract.unlock({
|
|
61
|
-
spendType:
|
|
64
|
+
spendType: index_js_2.SPEND_TYPE_USER_SPEND,
|
|
62
65
|
userPubKey: (0, scrypt_ts_opcat_1.PubKey)(pubkey),
|
|
63
66
|
userSig: tx.getSig(index, { address: changeAddress }),
|
|
64
67
|
spendScriptInputIndex: BigInt(-1),
|
|
@@ -69,15 +72,15 @@ async function burnToken(signer, provider, minterScriptHash, inputTokenUtxos, fe
|
|
|
69
72
|
guard.bindToUtxo(guardUtxo);
|
|
70
73
|
burnPsbt.addContractInput(guard, (contract, tx) => {
|
|
71
74
|
const ownerAddrOrScript = (0, scrypt_ts_opcat_1.fill)((0, scrypt_ts_opcat_1.toByteString)(''), txOutputCountMax);
|
|
72
|
-
(0,
|
|
75
|
+
(0, index_js_1.applyFixedArray)(ownerAddrOrScript, tx.txOutputs.map((output) => contractPeripheral_js_1.ContractPeripheral.scriptHash((0, scrypt_ts_opcat_1.toHex)(output.script))));
|
|
73
76
|
const outputTokenAmts = (0, scrypt_ts_opcat_1.fill)(BigInt(0), txOutputCountMax);
|
|
74
77
|
const tokenScriptIndexArray = (0, scrypt_ts_opcat_1.fill)(-1n, txOutputCountMax);
|
|
75
78
|
const outputSatoshis = (0, scrypt_ts_opcat_1.fill)(0n, txOutputCountMax);
|
|
76
|
-
(0,
|
|
77
|
-
const inputCAT20States = (0, scrypt_ts_opcat_1.fill)(
|
|
78
|
-
(0,
|
|
79
|
+
(0, index_js_1.applyFixedArray)(outputSatoshis, tx.txOutputs.map((output) => BigInt(output.value)));
|
|
80
|
+
const inputCAT20States = (0, scrypt_ts_opcat_1.fill)(cat20StateLib_js_1.CAT20StateLib.create(0n, (0, scrypt_ts_opcat_1.toByteString)('')), txInputCountMax);
|
|
81
|
+
(0, index_js_1.applyFixedArray)(inputCAT20States, inputTokenStates);
|
|
79
82
|
const nextStateHashes = (0, scrypt_ts_opcat_1.fill)((0, scrypt_ts_opcat_1.toByteString)(''), txOutputCountMax);
|
|
80
|
-
(0,
|
|
83
|
+
(0, index_js_1.applyFixedArray)(nextStateHashes, tx.txOutputs.map((output) => (0, scrypt_ts_opcat_1.sha256)((0, scrypt_ts_opcat_1.toHex)(output.data))));
|
|
81
84
|
contract.unlock(nextStateHashes, ownerAddrOrScript, outputTokenAmts, tokenScriptIndexArray, outputSatoshis, inputCAT20States, BigInt(tx.txOutputs.length));
|
|
82
85
|
});
|
|
83
86
|
// add fee input
|
|
@@ -92,13 +95,12 @@ async function burnToken(signer, provider, minterScriptHash, inputTokenUtxos, fe
|
|
|
92
95
|
(0, scrypt_ts_opcat_1.markSpent)(provider, guardPsbt.extractTransaction());
|
|
93
96
|
await provider.broadcast(burnPsbt.extractTransaction().toHex());
|
|
94
97
|
(0, scrypt_ts_opcat_1.markSpent)(provider, burnPsbt.extractTransaction());
|
|
95
|
-
|
|
98
|
+
(0, scrypt_ts_opcat_1.addChangeUtxoToProvider)(provider, burnPsbt);
|
|
96
99
|
return {
|
|
97
100
|
guardPsbt,
|
|
98
101
|
burnPsbt,
|
|
99
102
|
guardTxid: guardPsbt.extractTransaction().id,
|
|
100
103
|
burnTxid: burnPsbt.extractTransaction().id,
|
|
101
104
|
};
|
|
102
|
-
}
|
|
103
|
-
exports.burnToken = burnToken;
|
|
105
|
+
});
|
|
104
106
|
//# sourceMappingURL=burn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"burn.js","sourceRoot":"","sources":["../../../../../src/features/cat20/burn/burn.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"burn.js","sourceRoot":"","sources":["../../../../../src/features/cat20/burn/burn.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,16 +2,17 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.deployClosedMinterToken = void 0;
|
|
4
4
|
const scrypt_ts_opcat_1 = require("@opcat-labs/scrypt-ts-opcat");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
5
|
+
const index_js_1 = require("../../../contracts/index.js");
|
|
6
|
+
const metadata_js_1 = require("../../../lib/metadata.js");
|
|
7
|
+
const check_js_1 = require("../../../utils/check.js");
|
|
8
|
+
const cat20ClosedMinter_js_1 = require("../../../contracts/cat20/minters/cat20ClosedMinter.js");
|
|
9
|
+
const cat20Admin_js_1 = require("../../../contracts/cat20/cat20Admin.js");
|
|
10
|
+
const index_js_2 = require("../../../utils/index.js");
|
|
11
|
+
const cat20_js_1 = require("../../../contracts/cat20/cat20.js");
|
|
12
|
+
const contractPeripheral_js_1 = require("../../../utils/contractPeripheral.js");
|
|
13
|
+
const typeConstants_js_1 = require("../../../typeConstants.js");
|
|
14
|
+
const index_js_3 = require("../../../contracts/index.js");
|
|
15
|
+
const index_js_4 = require("../../../utils/index.js");
|
|
15
16
|
/**
|
|
16
17
|
* Deploys a CAT20 token and its metadata using `CAT20ClosedMinter` contract
|
|
17
18
|
* Only the token issuer can mint token
|
|
@@ -23,49 +24,56 @@ const contracts_2 = require("../../../contracts");
|
|
|
23
24
|
* @param changeAddress the address for the change output
|
|
24
25
|
* @returns the token info and the PSBTs for the genesis and deploy transactions
|
|
25
26
|
*/
|
|
26
|
-
async function
|
|
27
|
+
exports.deployClosedMinterToken = (0, index_js_4.createFeatureWithDryRun)(async function (signer, provider, deployInfo, feeRate, changeAddress) {
|
|
27
28
|
const address = await signer.getAddress();
|
|
28
29
|
const feeAddress = await signer.getAddress();
|
|
29
30
|
changeAddress = changeAddress || feeAddress;
|
|
30
31
|
const utxos = await provider.getUtxos(feeAddress);
|
|
31
|
-
(0,
|
|
32
|
+
(0, check_js_1.checkState)(utxos.length > 0, 'Insufficient satoshis');
|
|
32
33
|
const { metadata } = deployInfo;
|
|
33
34
|
if (metadata.icon) {
|
|
34
|
-
(0,
|
|
35
|
+
(0, check_js_1.checkState)(metadata_js_1.ImageMimeTypes.includes(metadata.icon.type), 'Invalid icon MIME type');
|
|
35
36
|
}
|
|
37
|
+
// Create Genesis contract instance and set metadata in its data field
|
|
38
|
+
const genesis = new scrypt_ts_opcat_1.Genesis();
|
|
39
|
+
genesis.data = metadata_js_1.MetadataSerializer.serialize('Token', deployInfo);
|
|
36
40
|
const genesisTx = new scrypt_ts_opcat_1.ExtPsbt({ network: await provider.getNetwork() })
|
|
37
41
|
.spendUTXO(utxos)
|
|
38
|
-
.
|
|
42
|
+
.addContractOutput(genesis, typeConstants_js_1.Postage.GENESIS_POSTAGE)
|
|
43
|
+
.change(changeAddress, feeRate)
|
|
39
44
|
.seal();
|
|
40
45
|
const signedGenesisTx = await signer.signPsbt(genesisTx.toHex(), genesisTx.psbtOptions());
|
|
41
46
|
genesisTx.combine(scrypt_ts_opcat_1.ExtPsbt.fromHex(signedGenesisTx));
|
|
42
47
|
genesisTx.finalizeAllInputs();
|
|
43
|
-
const genesisUtxo = genesisTx.
|
|
48
|
+
const genesisUtxo = genesisTx.getUtxo(0);
|
|
44
49
|
const tokenId = `${genesisUtxo.txId}_${genesisUtxo.outputIndex}`;
|
|
45
|
-
const closeMinter = new
|
|
46
|
-
const admin = new
|
|
47
|
-
const minterScriptHash =
|
|
48
|
-
const adminScriptHash = metadata.hasAdmin ?
|
|
49
|
-
const guardVariantScriptHashes =
|
|
50
|
-
const cat20 = new
|
|
51
|
-
const tokenScriptHash =
|
|
50
|
+
const closeMinter = new cat20ClosedMinter_js_1.CAT20ClosedMinter((0, index_js_2.toTokenOwnerAddress)(address), (0, index_js_2.outpoint2ByteString)(tokenId));
|
|
51
|
+
const admin = new cat20Admin_js_1.CAT20Admin((0, index_js_2.outpoint2ByteString)(tokenId));
|
|
52
|
+
const minterScriptHash = contractPeripheral_js_1.ContractPeripheral.scriptHash(closeMinter);
|
|
53
|
+
const adminScriptHash = metadata.hasAdmin ? contractPeripheral_js_1.ContractPeripheral.scriptHash(admin) : index_js_1.NULL_ADMIN_SCRIPT_HASH;
|
|
54
|
+
const guardVariantScriptHashes = contractPeripheral_js_1.CAT20GuardPeripheral.getGuardVariantScriptHashes();
|
|
55
|
+
const cat20 = new cat20_js_1.CAT20(minterScriptHash, guardVariantScriptHashes, metadata.hasAdmin, adminScriptHash);
|
|
56
|
+
const tokenScriptHash = contractPeripheral_js_1.ContractPeripheral.scriptHash(cat20);
|
|
52
57
|
const minterState = {
|
|
53
58
|
tokenScriptHash,
|
|
54
59
|
};
|
|
55
60
|
const adminState = {
|
|
56
|
-
tag:
|
|
57
|
-
adminAddress: (0,
|
|
61
|
+
tag: index_js_3.ConstantsLib.OPCAT_CAT20_ADMIN_TAG,
|
|
62
|
+
adminAddress: (0, index_js_2.toTokenOwnerAddress)(address),
|
|
58
63
|
};
|
|
59
64
|
closeMinter.state = minterState;
|
|
60
65
|
admin.state = adminState;
|
|
66
|
+
// Bind Genesis contract to UTXO
|
|
67
|
+
genesis.bindToUtxo(genesisTx.getUtxo(0));
|
|
61
68
|
const deployTx = new scrypt_ts_opcat_1.ExtPsbt({ network: await provider.getNetwork() })
|
|
62
|
-
.
|
|
63
|
-
.
|
|
69
|
+
.addContractInput(genesis, (0, scrypt_ts_opcat_1.genesisCheckDeploy)())
|
|
70
|
+
.spendUTXO(genesisTx.getChangeUTXO())
|
|
71
|
+
.addContractOutput(closeMinter, typeConstants_js_1.Postage.MINTER_POSTAGE);
|
|
64
72
|
if (metadata.hasAdmin) {
|
|
65
|
-
deployTx.addContractOutput(admin,
|
|
73
|
+
deployTx.addContractOutput(admin, typeConstants_js_1.Postage.ADMIN_POSTAGE);
|
|
66
74
|
}
|
|
67
75
|
deployTx
|
|
68
|
-
.change(changeAddress, feeRate
|
|
76
|
+
.change(changeAddress, feeRate)
|
|
69
77
|
.seal();
|
|
70
78
|
const signedDeployTx = await signer.signPsbt(deployTx.toHex(), deployTx.psbtOptions());
|
|
71
79
|
deployTx.combine(scrypt_ts_opcat_1.ExtPsbt.fromHex(signedDeployTx));
|
|
@@ -74,6 +82,7 @@ async function deployClosedMinterToken(signer, provider, deployInfo, feeRate, ch
|
|
|
74
82
|
(0, scrypt_ts_opcat_1.markSpent)(provider, genesisTx.extractTransaction());
|
|
75
83
|
await provider.broadcast(deployTx.extractTransaction().toHex());
|
|
76
84
|
(0, scrypt_ts_opcat_1.markSpent)(provider, deployTx.extractTransaction());
|
|
85
|
+
(0, scrypt_ts_opcat_1.addChangeUtxoToProvider)(provider, deployTx);
|
|
77
86
|
return {
|
|
78
87
|
tokenId,
|
|
79
88
|
tokenScriptHash,
|
|
@@ -87,6 +96,5 @@ async function deployClosedMinterToken(signer, provider, deployInfo, feeRate, ch
|
|
|
87
96
|
metadata,
|
|
88
97
|
timestamp: Date.now(),
|
|
89
98
|
};
|
|
90
|
-
}
|
|
91
|
-
exports.deployClosedMinterToken = deployClosedMinterToken;
|
|
99
|
+
});
|
|
92
100
|
//# sourceMappingURL=closedMinter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"closedMinter.js","sourceRoot":"","sources":["../../../../../src/features/cat20/deploy/closedMinter.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"closedMinter.js","sourceRoot":"","sources":["../../../../../src/features/cat20/deploy/closedMinter.ts"],"names":[],"mappings":";;;AAAA,iEAA2J;AAC3J,0DAA2F;AAC3F,0DAA6F;AAC7F,sDAAoD;AACpD,gGAAyF;AACzF,0EAAmE;AACnE,sDAAkF;AAClF,gEAAyD;AACzD,gFAA+F;AAK/F,gEAAmD;AACnD,0DAA0D;AAC1D,sDAAiE;AAGjE;;;;;;;;;;GAUG;AACU,QAAA,uBAAuB,GAAG,IAAA,kCAAuB,EAAC,KAAK,WAClE,MAAc,EACd,QAAsC,EACtC,UAEC,EACD,OAAe,EACf,aAAsB;IAOtB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAA;IACzC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAA;IAE5C,aAAa,GAAG,aAAa,IAAI,UAAU,CAAA;IAE3C,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;IACjD,IAAA,qBAAU,EAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,uBAAuB,CAAC,CAAA;IAErD,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAA;IAE/B,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClB,IAAA,qBAAU,EAAC,4BAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,wBAAwB,CAAC,CAAA;IACnF,CAAC;IAED,sEAAsE;IACtE,MAAM,OAAO,GAAG,IAAI,yBAAO,EAAE,CAAA;IAC7B,OAAO,CAAC,IAAI,GAAG,gCAAkB,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;IAEhE,MAAM,SAAS,GAAG,IAAI,yBAAO,CAAC,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC;SACpE,SAAS,CAAC,KAAK,CAAC;SAChB,iBAAiB,CAAC,OAAO,EAAE,0BAAO,CAAC,eAAe,CAAC;SACnD,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC;SAC9B,IAAI,EAAE,CAAA;IAET,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,QAAQ,CAC3C,SAAS,CAAC,KAAK,EAAE,EACjB,SAAS,CAAC,WAAW,EAAE,CACxB,CAAA;IACD,SAAS,CAAC,OAAO,CAAC,yBAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAA;IACnD,SAAS,CAAC,iBAAiB,EAAE,CAAA;IAE7B,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAE,CAAA;IACzC,MAAM,OAAO,GAAG,GAAG,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,WAAW,EAAE,CAAA;IAChE,MAAM,WAAW,GAAG,IAAI,wCAAiB,CACvC,IAAA,8BAAmB,EAAC,OAAO,CAAC,EAC5B,IAAA,8BAAmB,EAAC,OAAO,CAAC,CAC7B,CAAA;IACD,MAAM,KAAK,GAAG,IAAI,0BAAU,CAAC,IAAA,8BAAmB,EAAC,OAAO,CAAC,CAAC,CAAA;IAC1D,MAAM,gBAAgB,GAAG,0CAAkB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;IACnE,MAAM,eAAe,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,0CAAkB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,iCAAsB,CAAC;IAC1G,MAAM,wBAAwB,GAAG,4CAAoB,CAAC,2BAA2B,EAAE,CAAA;IACnF,MAAM,KAAK,GAAG,IAAI,gBAAK,CACrB,gBAAgB,EAChB,wBAAwB,EACxB,QAAQ,CAAC,QAAQ,EACjB,eAAe,CAChB,CAAA;IACD,MAAM,eAAe,GAAG,0CAAkB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IAC5D,MAAM,WAAW,GAA2B;QAC1C,eAAe;KAChB,CAAA;IACD,MAAM,UAAU,GAAoB;QAClC,GAAG,EAAE,uBAAY,CAAC,qBAAqB;QACvC,YAAY,EAAE,IAAA,8BAAmB,EAAC,OAAO,CAAC;KAC3C,CAAA;IAED,WAAW,CAAC,KAAK,GAAG,WAAW,CAAA;IAC/B,KAAK,CAAC,KAAK,GAAG,UAAU,CAAA;IAExB,gCAAgC;IAChC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IAExC,MAAM,QAAQ,GAAG,IAAI,yBAAO,CAAC,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC;SACnE,gBAAgB,CAAC,OAAO,EAAE,IAAA,oCAAkB,GAAE,CAAC;SAC/C,SAAS,CAAC,SAAS,CAAC,aAAa,EAAG,CAAC;SACrC,iBAAiB,CAAC,WAAW,EAAE,0BAAO,CAAC,cAAc,CAAC,CAAA;IAEzD,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACtB,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAAE,0BAAO,CAAC,aAAa,CAAC,CAAA;IAC1D,CAAC;IAED,QAAQ;SACL,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC;SAC9B,IAAI,EAAE,CAAA;IAET,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,QAAQ,CAC1C,QAAQ,CAAC,KAAK,EAAE,EAChB,QAAQ,CAAC,WAAW,EAAE,CACvB,CAAA;IACD,QAAQ,CAAC,OAAO,CAAC,yBAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAA;IACjD,QAAQ,CAAC,iBAAiB,EAAE,CAAA;IAE5B,MAAM,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,CAAC,CAAA;IAChE,IAAA,2BAAS,EAAC,QAAQ,EAAE,SAAS,CAAC,kBAAkB,EAAE,CAAC,CAAA;IACnD,MAAM,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,CAAC,CAAA;IAC/D,IAAA,2BAAS,EAAC,QAAQ,EAAE,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAA;IAClD,IAAA,yCAAuB,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAE3C,OAAO;QACL,OAAO;QACP,eAAe;QACf,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,eAAe;QACf,gBAAgB;QAChB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,SAAS,CAAC,kBAAkB,EAAE,CAAC,EAAE;QAC9C,UAAU,EAAE,QAAQ;QACpB,UAAU,EAAE,QAAQ,CAAC,kBAAkB,EAAE,CAAC,EAAE;QAC5C,QAAQ;QACR,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAA;AACH,CAAC,CAAC,CAAA"}
|