@peeramid-labs/sdk 3.15.0 → 3.16.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/README.md +34 -0
- package/cli/abis/ArguableVotingTournament.js +10 -0
- package/cli/abis/ArguableVotingTournament.js.map +1 -1
- package/cli/abis/MAODistribution.js +16 -0
- package/cli/abis/MAODistribution.js.map +1 -1
- package/cli/abis/MockShortStrings.js +37 -0
- package/cli/abis/MockShortStrings.js.map +1 -0
- package/cli/abis/Multipass.js +7 -1
- package/cli/abis/Multipass.js.map +1 -1
- package/cli/abis/PausableUpgradeable.js +79 -0
- package/cli/abis/PausableUpgradeable.js.map +1 -0
- package/cli/abis/RankToken.js +38 -0
- package/cli/abis/RankToken.js.map +1 -1
- package/cli/abis/RankifyDiamondInstance.js +1987 -756
- package/cli/abis/RankifyDiamondInstance.js.map +1 -1
- package/cli/abis/RankifyInstanceInit.js +190 -0
- package/cli/abis/RankifyInstanceInit.js.map +1 -1
- package/cli/abis/RankifyInstanceMainFacet.js +38 -0
- package/cli/abis/RankifyInstanceMainFacet.js.map +1 -1
- package/cli/abis/RankifyOwnersFacet.js +78 -0
- package/cli/abis/RankifyOwnersFacet.js.map +1 -0
- package/cli/abis/UBI.js +775 -0
- package/cli/abis/UBI.js.map +1 -0
- package/cli/abis/index.js +19 -1
- package/cli/abis/index.js.map +1 -1
- package/cli/abis/superinterface.js +3049 -0
- package/cli/abis/superinterface.js.map +1 -0
- package/cli/cli/commands/blockchain/mine.js +0 -2
- package/cli/cli/commands/blockchain/mine.js.map +1 -1
- package/cli/cli/commands/fellowship/game/create.js +45 -1
- package/cli/cli/commands/fellowship/game/create.js.map +1 -1
- package/cli/cli/commands/fellowship/game/end-proposing.js +2 -2
- package/cli/cli/commands/fellowship/game/end-proposing.js.map +1 -1
- package/cli/cli/commands/fellowship/game/end-voting.js +2 -2
- package/cli/cli/commands/fellowship/game/end-voting.js.map +1 -1
- package/cli/cli/commands/fellowship/game/join.js +2 -1
- package/cli/cli/commands/fellowship/game/join.js.map +1 -1
- package/cli/cli/commands/fellowship/game/start.js +0 -17
- package/cli/cli/commands/fellowship/game/start.js.map +1 -1
- package/cli/cli/commands/fellowship/game/vote.js +2 -1
- package/cli/cli/commands/fellowship/game/vote.js.map +1 -1
- package/cli/cli/commands/fellowship/gameMaster/add.js +52 -0
- package/cli/cli/commands/fellowship/gameMaster/add.js.map +1 -0
- package/cli/cli/commands/fellowship/gameMaster/index.js +7 -0
- package/cli/cli/commands/fellowship/gameMaster/index.js.map +1 -0
- package/cli/cli/commands/fellowship/index.js +3 -1
- package/cli/cli/commands/fellowship/index.js.map +1 -1
- package/cli/cli/commands/instances/list.js +6 -0
- package/cli/cli/commands/instances/list.js.map +1 -1
- package/cli/cli/commands/multipass/contract.js +26 -0
- package/cli/cli/commands/multipass/contract.js.map +1 -1
- package/cli/cli/commands/multipass/domain.js +44 -1
- package/cli/cli/commands/multipass/domain.js.map +1 -1
- package/cli/cli/commands/multipass/domains.js +16 -2
- package/cli/cli/commands/multipass/domains.js.map +1 -1
- package/cli/cli/playbooks/demo-script.js +192 -0
- package/cli/cli/playbooks/demo-script.js.map +1 -0
- package/cli/cli/playbooks/demoScript.js +190 -0
- package/cli/cli/playbooks/demoScript.js.map +1 -0
- package/cli/cli/playbooks/initGameMaster.js +50 -0
- package/cli/cli/playbooks/initGameMaster.js.map +1 -0
- package/cli/cli/playbooks/playbookRunner.js +80 -0
- package/cli/cli/playbooks/playbookRunner.js.map +1 -0
- package/cli/cli/playbooks/push-game-to-next-phase.js +162 -0
- package/cli/cli/playbooks/push-game-to-next-phase.js.map +1 -0
- package/cli/cli/playbooks/utils.js +210 -0
- package/cli/cli/playbooks/utils.js.map +1 -0
- package/cli/multipass/MultipassBase.js +38 -70
- package/cli/multipass/MultipassBase.js.map +1 -1
- package/cli/multipass/Owner.js +34 -16
- package/cli/multipass/Owner.js.map +1 -1
- package/cli/rankify/GameMaster.js.map +1 -1
- package/cli/rankify/InstanceAdmininstrative.js +70 -0
- package/cli/rankify/InstanceAdmininstrative.js.map +1 -0
- package/cli/rankify/InstanceBase.js +14 -0
- package/cli/rankify/InstanceBase.js.map +1 -1
- package/cli/rankify/Player.js +24 -1
- package/cli/rankify/Player.js.map +1 -1
- package/cli/types.js +7 -1
- package/cli/types.js.map +1 -1
- package/cli/utils/EnvioGraphQLClient.js +468 -0
- package/cli/utils/EnvioGraphQLClient.js.map +1 -1
- package/cli/utils/artifacts.js +15 -3
- package/cli/utils/artifacts.js.map +1 -1
- package/cli/utils/chainMapping.js +0 -1
- package/cli/utils/chainMapping.js.map +1 -1
- package/docs/classes/EnvioGraphQLClient.md +368 -0
- package/docs/classes/GameMaster.md +19 -0
- package/docs/classes/InstanceBase.md +19 -0
- package/docs/classes/InstancePlayer.md +22 -8
- package/docs/classes/InstanceUBI.md +1591 -0
- package/docs/classes/Multipass.md +31 -4
- package/docs/classes/MultipassBase.md +26 -3
- package/docs/docs/classes/EnvioGraphQLClient.md +368 -0
- package/docs/docs/classes/GameMaster.md +19 -0
- package/docs/docs/classes/InstanceBase.md +19 -0
- package/docs/docs/classes/InstancePlayer.md +22 -8
- package/docs/docs/classes/InstanceUBI.md +1591 -0
- package/docs/docs/classes/Multipass.md +31 -4
- package/docs/docs/classes/MultipassBase.md +26 -3
- package/docs/docs/enums/ContractTypes.md +27 -0
- package/docs/docs/index.md +24 -8
- package/docs/docs/interfaces/ContractCondition.md +41 -0
- package/docs/docs/interfaces/DailyProposal.md +36 -0
- package/docs/docs/interfaces/JoinRequirementsInput.md +20 -0
- package/docs/docs/interfaces/ProposalGlobalStats.md +29 -0
- package/docs/docs/interfaces/TransactionProperties.md +20 -0
- package/docs/docs/interfaces/UBIParams.md +29 -0
- package/docs/docs/interfaces/UserState.md +22 -0
- package/docs/docs/interfaces/VoteElement.md +22 -0
- package/docs/docs/interfaces/configSmartRequirement.md +34 -0
- package/docs/docs/interfaces/numericConditon.md +41 -0
- package/docs/enums/ContractTypes.md +27 -0
- package/docs/index.md +24 -8
- package/docs/interfaces/ContractCondition.md +41 -0
- package/docs/interfaces/DailyProposal.md +36 -0
- package/docs/interfaces/JoinRequirementsInput.md +20 -0
- package/docs/interfaces/ProposalGlobalStats.md +29 -0
- package/docs/interfaces/TransactionProperties.md +20 -0
- package/docs/interfaces/UBIParams.md +29 -0
- package/docs/interfaces/UserState.md +22 -0
- package/docs/interfaces/VoteElement.md +22 -0
- package/docs/interfaces/configSmartRequirement.md +34 -0
- package/docs/interfaces/numericConditon.md +41 -0
- package/lib.commonjs/abis/ArguableVotingTournament.d.ts +8 -0
- package/lib.commonjs/abis/ArguableVotingTournament.d.ts.map +1 -1
- package/lib.commonjs/abis/ArguableVotingTournament.js +10 -0
- package/lib.commonjs/abis/ArguableVotingTournament.js.map +1 -1
- package/lib.commonjs/abis/MAODistribution.d.ts +12 -0
- package/lib.commonjs/abis/MAODistribution.d.ts.map +1 -1
- package/lib.commonjs/abis/MAODistribution.js +16 -0
- package/lib.commonjs/abis/MAODistribution.js.map +1 -1
- package/lib.commonjs/abis/MockShortStrings.d.ts +25 -0
- package/lib.commonjs/abis/MockShortStrings.d.ts.map +1 -0
- package/lib.commonjs/abis/MockShortStrings.js +37 -0
- package/lib.commonjs/abis/MockShortStrings.js.map +1 -0
- package/lib.commonjs/abis/Multipass.d.ts +5 -1
- package/lib.commonjs/abis/Multipass.d.ts.map +1 -1
- package/lib.commonjs/abis/Multipass.js +7 -1
- package/lib.commonjs/abis/Multipass.js.map +1 -1
- package/lib.commonjs/abis/PausableUpgradeable.d.ts +59 -0
- package/lib.commonjs/abis/PausableUpgradeable.d.ts.map +1 -0
- package/lib.commonjs/abis/PausableUpgradeable.js +79 -0
- package/lib.commonjs/abis/PausableUpgradeable.js.map +1 -0
- package/lib.commonjs/abis/RankToken.d.ts +30 -0
- package/lib.commonjs/abis/RankToken.d.ts.map +1 -1
- package/lib.commonjs/abis/RankToken.js +38 -0
- package/lib.commonjs/abis/RankToken.js.map +1 -1
- package/lib.commonjs/abis/RankifyDiamondInstance.d.ts +970 -9
- package/lib.commonjs/abis/RankifyDiamondInstance.d.ts.map +1 -1
- package/lib.commonjs/abis/RankifyDiamondInstance.js +1987 -756
- package/lib.commonjs/abis/RankifyDiamondInstance.js.map +1 -1
- package/lib.commonjs/abis/RankifyInstanceInit.d.ts +150 -0
- package/lib.commonjs/abis/RankifyInstanceInit.d.ts.map +1 -1
- package/lib.commonjs/abis/RankifyInstanceInit.js +190 -0
- package/lib.commonjs/abis/RankifyInstanceInit.js.map +1 -1
- package/lib.commonjs/abis/RankifyInstanceMainFacet.d.ts +30 -0
- package/lib.commonjs/abis/RankifyInstanceMainFacet.d.ts.map +1 -1
- package/lib.commonjs/abis/RankifyInstanceMainFacet.js +38 -0
- package/lib.commonjs/abis/RankifyInstanceMainFacet.js.map +1 -1
- package/lib.commonjs/abis/RankifyOwnersFacet.d.ts +57 -0
- package/lib.commonjs/abis/RankifyOwnersFacet.d.ts.map +1 -0
- package/lib.commonjs/abis/RankifyOwnersFacet.js +78 -0
- package/lib.commonjs/abis/RankifyOwnersFacet.js.map +1 -0
- package/lib.commonjs/abis/UBI.d.ts +601 -0
- package/lib.commonjs/abis/UBI.d.ts.map +1 -0
- package/lib.commonjs/abis/UBI.js +775 -0
- package/lib.commonjs/abis/UBI.js.map +1 -0
- package/lib.commonjs/abis/index.d.ts +1935 -1
- package/lib.commonjs/abis/index.d.ts.map +1 -1
- package/lib.commonjs/abis/index.js +19 -1
- package/lib.commonjs/abis/index.js.map +1 -1
- package/lib.commonjs/abis/superinterface.d.ts +3 -0
- package/lib.commonjs/abis/superinterface.d.ts.map +1 -0
- package/lib.commonjs/abis/superinterface.js +3049 -0
- package/lib.commonjs/abis/superinterface.js.map +1 -0
- package/lib.commonjs/index.d.ts +2 -0
- package/lib.commonjs/index.d.ts.map +1 -1
- package/lib.commonjs/index.js +3 -1
- package/lib.commonjs/index.js.map +1 -1
- package/lib.commonjs/multipass/MultipassBase.d.ts +18 -4
- package/lib.commonjs/multipass/MultipassBase.d.ts.map +1 -1
- package/lib.commonjs/multipass/MultipassBase.js +39 -71
- package/lib.commonjs/multipass/MultipassBase.js.map +1 -1
- package/lib.commonjs/multipass/Owner.d.ts +22 -8
- package/lib.commonjs/multipass/Owner.d.ts.map +1 -1
- package/lib.commonjs/multipass/Owner.js +34 -16
- package/lib.commonjs/multipass/Owner.js.map +1 -1
- package/lib.commonjs/multipass/Registrar.d.ts +3 -1
- package/lib.commonjs/multipass/Registrar.d.ts.map +1 -1
- package/lib.commonjs/multipass/Registrar.js +2 -2
- package/lib.commonjs/multipass/Registrar.js.map +1 -1
- package/lib.commonjs/rankify/GameMaster.d.ts +5 -1
- package/lib.commonjs/rankify/GameMaster.d.ts.map +1 -1
- package/lib.commonjs/rankify/GameMaster.js.map +1 -1
- package/lib.commonjs/rankify/InstanceAdmininstrative.d.ts +34 -0
- package/lib.commonjs/rankify/InstanceAdmininstrative.d.ts.map +1 -0
- package/lib.commonjs/rankify/InstanceAdmininstrative.js +74 -0
- package/lib.commonjs/rankify/InstanceAdmininstrative.js.map +1 -0
- package/lib.commonjs/rankify/InstanceBase.d.ts +1 -0
- package/lib.commonjs/rankify/InstanceBase.d.ts.map +1 -1
- package/lib.commonjs/rankify/InstanceBase.js +14 -0
- package/lib.commonjs/rankify/InstanceBase.js.map +1 -1
- package/lib.commonjs/rankify/Player.d.ts +2 -36
- package/lib.commonjs/rankify/Player.d.ts.map +1 -1
- package/lib.commonjs/rankify/Player.js +24 -1
- package/lib.commonjs/rankify/Player.js.map +1 -1
- package/lib.commonjs/types.d.ts +33 -0
- package/lib.commonjs/types.d.ts.map +1 -1
- package/lib.commonjs/types.js +7 -1
- package/lib.commonjs/types.js.map +1 -1
- package/lib.commonjs/ubi/InstanceUBI.d.ts +548 -0
- package/lib.commonjs/ubi/InstanceUBI.d.ts.map +1 -0
- package/lib.commonjs/ubi/InstanceUBI.js +728 -0
- package/lib.commonjs/ubi/InstanceUBI.js.map +1 -0
- package/lib.commonjs/utils/EnvioGraphQLClient.d.ts +279 -0
- package/lib.commonjs/utils/EnvioGraphQLClient.d.ts.map +1 -1
- package/lib.commonjs/utils/EnvioGraphQLClient.js +468 -0
- package/lib.commonjs/utils/EnvioGraphQLClient.js.map +1 -1
- package/lib.commonjs/utils/artifacts.d.ts.map +1 -1
- package/lib.commonjs/utils/artifacts.js +15 -3
- package/lib.commonjs/utils/artifacts.js.map +1 -1
- package/lib.commonjs/utils/chainMapping.d.ts.map +1 -1
- package/lib.commonjs/utils/chainMapping.js +0 -1
- package/lib.commonjs/utils/chainMapping.js.map +1 -1
- package/lib.commonjs/utils/mockUtils.d.ts +3 -0
- package/lib.commonjs/utils/mockUtils.d.ts.map +1 -1
- package/lib.commonjs/utils/mockUtils.js +3 -0
- package/lib.commonjs/utils/mockUtils.js.map +1 -1
- package/lib.esm/abis/ArguableVotingTournament.d.ts +8 -0
- package/lib.esm/abis/ArguableVotingTournament.d.ts.map +1 -1
- package/lib.esm/abis/ArguableVotingTournament.js +10 -0
- package/lib.esm/abis/ArguableVotingTournament.js.map +1 -1
- package/lib.esm/abis/MAODistribution.d.ts +12 -0
- package/lib.esm/abis/MAODistribution.d.ts.map +1 -1
- package/lib.esm/abis/MAODistribution.js +16 -0
- package/lib.esm/abis/MAODistribution.js.map +1 -1
- package/lib.esm/abis/MockShortStrings.d.ts +25 -0
- package/lib.esm/abis/MockShortStrings.d.ts.map +1 -0
- package/lib.esm/abis/MockShortStrings.js +34 -0
- package/lib.esm/abis/MockShortStrings.js.map +1 -0
- package/lib.esm/abis/Multipass.d.ts +5 -1
- package/lib.esm/abis/Multipass.d.ts.map +1 -1
- package/lib.esm/abis/Multipass.js +7 -1
- package/lib.esm/abis/Multipass.js.map +1 -1
- package/lib.esm/abis/PausableUpgradeable.d.ts +59 -0
- package/lib.esm/abis/PausableUpgradeable.d.ts.map +1 -0
- package/lib.esm/abis/PausableUpgradeable.js +76 -0
- package/lib.esm/abis/PausableUpgradeable.js.map +1 -0
- package/lib.esm/abis/RankToken.d.ts +30 -0
- package/lib.esm/abis/RankToken.d.ts.map +1 -1
- package/lib.esm/abis/RankToken.js +38 -0
- package/lib.esm/abis/RankToken.js.map +1 -1
- package/lib.esm/abis/RankifyDiamondInstance.d.ts +970 -9
- package/lib.esm/abis/RankifyDiamondInstance.d.ts.map +1 -1
- package/lib.esm/abis/RankifyDiamondInstance.js +1987 -756
- package/lib.esm/abis/RankifyDiamondInstance.js.map +1 -1
- package/lib.esm/abis/RankifyInstanceInit.d.ts +150 -0
- package/lib.esm/abis/RankifyInstanceInit.d.ts.map +1 -1
- package/lib.esm/abis/RankifyInstanceInit.js +190 -0
- package/lib.esm/abis/RankifyInstanceInit.js.map +1 -1
- package/lib.esm/abis/RankifyInstanceMainFacet.d.ts +30 -0
- package/lib.esm/abis/RankifyInstanceMainFacet.d.ts.map +1 -1
- package/lib.esm/abis/RankifyInstanceMainFacet.js +38 -0
- package/lib.esm/abis/RankifyInstanceMainFacet.js.map +1 -1
- package/lib.esm/abis/RankifyOwnersFacet.d.ts +57 -0
- package/lib.esm/abis/RankifyOwnersFacet.d.ts.map +1 -0
- package/lib.esm/abis/RankifyOwnersFacet.js +75 -0
- package/lib.esm/abis/RankifyOwnersFacet.js.map +1 -0
- package/lib.esm/abis/UBI.d.ts +601 -0
- package/lib.esm/abis/UBI.d.ts.map +1 -0
- package/lib.esm/abis/UBI.js +772 -0
- package/lib.esm/abis/UBI.js.map +1 -0
- package/lib.esm/abis/index.d.ts +1935 -1
- package/lib.esm/abis/index.d.ts.map +1 -1
- package/lib.esm/abis/index.js +13 -0
- package/lib.esm/abis/index.js.map +1 -1
- package/lib.esm/abis/superinterface.d.ts +3 -0
- package/lib.esm/abis/superinterface.d.ts.map +1 -0
- package/lib.esm/abis/superinterface.js +3046 -0
- package/lib.esm/abis/superinterface.js.map +1 -0
- package/lib.esm/index.d.ts +2 -0
- package/lib.esm/index.d.ts.map +1 -1
- package/lib.esm/index.js +1 -0
- package/lib.esm/index.js.map +1 -1
- package/lib.esm/multipass/MultipassBase.d.ts +18 -4
- package/lib.esm/multipass/MultipassBase.d.ts.map +1 -1
- package/lib.esm/multipass/MultipassBase.js +40 -72
- package/lib.esm/multipass/MultipassBase.js.map +1 -1
- package/lib.esm/multipass/Owner.d.ts +22 -8
- package/lib.esm/multipass/Owner.d.ts.map +1 -1
- package/lib.esm/multipass/Owner.js +34 -16
- package/lib.esm/multipass/Owner.js.map +1 -1
- package/lib.esm/multipass/Registrar.d.ts +3 -1
- package/lib.esm/multipass/Registrar.d.ts.map +1 -1
- package/lib.esm/multipass/Registrar.js +2 -2
- package/lib.esm/multipass/Registrar.js.map +1 -1
- package/lib.esm/rankify/GameMaster.d.ts +5 -1
- package/lib.esm/rankify/GameMaster.d.ts.map +1 -1
- package/lib.esm/rankify/GameMaster.js.map +1 -1
- package/lib.esm/rankify/InstanceAdmininstrative.d.ts +34 -0
- package/lib.esm/rankify/InstanceAdmininstrative.d.ts.map +1 -0
- package/lib.esm/rankify/InstanceAdmininstrative.js +70 -0
- package/lib.esm/rankify/InstanceAdmininstrative.js.map +1 -0
- package/lib.esm/rankify/InstanceBase.d.ts +1 -0
- package/lib.esm/rankify/InstanceBase.d.ts.map +1 -1
- package/lib.esm/rankify/InstanceBase.js +14 -0
- package/lib.esm/rankify/InstanceBase.js.map +1 -1
- package/lib.esm/rankify/Player.d.ts +2 -36
- package/lib.esm/rankify/Player.d.ts.map +1 -1
- package/lib.esm/rankify/Player.js +24 -1
- package/lib.esm/rankify/Player.js.map +1 -1
- package/lib.esm/types.d.ts +33 -0
- package/lib.esm/types.d.ts.map +1 -1
- package/lib.esm/types.js +6 -0
- package/lib.esm/types.js.map +1 -1
- package/lib.esm/ubi/InstanceUBI.d.ts +548 -0
- package/lib.esm/ubi/InstanceUBI.d.ts.map +1 -0
- package/lib.esm/ubi/InstanceUBI.js +722 -0
- package/lib.esm/ubi/InstanceUBI.js.map +1 -0
- package/lib.esm/utils/EnvioGraphQLClient.d.ts +279 -0
- package/lib.esm/utils/EnvioGraphQLClient.d.ts.map +1 -1
- package/lib.esm/utils/EnvioGraphQLClient.js +468 -0
- package/lib.esm/utils/EnvioGraphQLClient.js.map +1 -1
- package/lib.esm/utils/artifacts.d.ts.map +1 -1
- package/lib.esm/utils/artifacts.js +15 -3
- package/lib.esm/utils/artifacts.js.map +1 -1
- package/lib.esm/utils/chainMapping.d.ts.map +1 -1
- package/lib.esm/utils/chainMapping.js +0 -1
- package/lib.esm/utils/chainMapping.js.map +1 -1
- package/lib.esm/utils/mockUtils.d.ts +3 -0
- package/lib.esm/utils/mockUtils.d.ts.map +1 -1
- package/lib.esm/utils/mockUtils.js +3 -0
- package/lib.esm/utils/mockUtils.js.map +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
#!/usr/bin/env ts-node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.runPushGameToNextPhase = runPushGameToNextPhase;
|
|
5
|
+
const utils_1 = require("./utils");
|
|
6
|
+
var TurnPhase;
|
|
7
|
+
(function (TurnPhase) {
|
|
8
|
+
TurnPhase[TurnPhase["PROPOSING"] = 0] = "PROPOSING";
|
|
9
|
+
TurnPhase[TurnPhase["VOTING"] = 1] = "VOTING";
|
|
10
|
+
})(TurnPhase || (TurnPhase = {}));
|
|
11
|
+
/**
|
|
12
|
+
* Push game to next phase
|
|
13
|
+
* - If no gameId: create and start game
|
|
14
|
+
* - If gameId exists: advance to next phase based on current state
|
|
15
|
+
*/
|
|
16
|
+
async function pushToNextPhase(fellowshipId, instanceAddress, gameMaster, gameId) {
|
|
17
|
+
try {
|
|
18
|
+
let currentGameId = gameId;
|
|
19
|
+
// If no game ID provided, create and start a new game
|
|
20
|
+
if (!currentGameId) {
|
|
21
|
+
(0, utils_1.logSection)("No game ID provided - Creating and starting new game");
|
|
22
|
+
const timePerTurn = 3000;
|
|
23
|
+
const timeToJoin = 3000;
|
|
24
|
+
const metadata = "ipfs://QmZuHWcCaSKBrbquCFwhWMTZ5qmxQGxzQhy8NJgaKsY1J8";
|
|
25
|
+
// Create game and capture the game ID
|
|
26
|
+
currentGameId = (0, utils_1.createGameAndGetId)(fellowshipId, 1, {
|
|
27
|
+
turns: 3,
|
|
28
|
+
timeToJoin: timeToJoin,
|
|
29
|
+
timePerTurn: timePerTurn,
|
|
30
|
+
voteCredits: 1,
|
|
31
|
+
metadata: metadata,
|
|
32
|
+
});
|
|
33
|
+
// Store thread in API server
|
|
34
|
+
await (0, utils_1.storeOrUpdateThreadInApi)({
|
|
35
|
+
threadId: currentGameId,
|
|
36
|
+
fellowshipId: fellowshipId,
|
|
37
|
+
instanceAddress: instanceAddress,
|
|
38
|
+
owner: gameMaster.walletClient.account?.address || "0x0",
|
|
39
|
+
threadType: "MARKUP",
|
|
40
|
+
metadata: metadata,
|
|
41
|
+
});
|
|
42
|
+
// Join game with multiple identities
|
|
43
|
+
for (let i = 0; i <= 4; i++) {
|
|
44
|
+
(0, utils_1.executeCommand)(`pnpm cli fellowship game join ${fellowshipId} ${currentGameId} -i ${i}`, `Joining game with identity ${i}`);
|
|
45
|
+
}
|
|
46
|
+
(0, utils_1.executeCommand)(`pnpm cli fellowship game start ${fellowshipId} ${currentGameId} -i 1 --auto-mine`, "Starting game");
|
|
47
|
+
// Update game phase to "In progress"
|
|
48
|
+
await (0, utils_1.storeOrUpdateThreadInApi)({
|
|
49
|
+
threadId: currentGameId,
|
|
50
|
+
fellowshipId: fellowshipId,
|
|
51
|
+
instanceAddress: instanceAddress,
|
|
52
|
+
gamePhase: "In progress",
|
|
53
|
+
});
|
|
54
|
+
(0, utils_1.logSuccess)(`Game ${currentGameId} created and started successfully!`);
|
|
55
|
+
return currentGameId;
|
|
56
|
+
}
|
|
57
|
+
// Game ID exists - get current state and advance to next phase
|
|
58
|
+
(0, utils_1.logSection)(`Advancing game ${currentGameId} to next phase`);
|
|
59
|
+
const gameState = await gameMaster.getGameState({
|
|
60
|
+
instanceAddress,
|
|
61
|
+
gameId: BigInt(currentGameId),
|
|
62
|
+
});
|
|
63
|
+
console.log(`Current game phase: ${gameState.gamePhase}`);
|
|
64
|
+
console.log(`Current turn: ${gameState.currentTurn}`);
|
|
65
|
+
console.log(`Current phase: ${gameState.phase === 0n ? "PROPOSING" : "VOTING"}`);
|
|
66
|
+
// Check if game has ended
|
|
67
|
+
if (gameState.hasEnded) {
|
|
68
|
+
console.log("⚠️ Game has already ended. No further phases to advance.");
|
|
69
|
+
return currentGameId;
|
|
70
|
+
}
|
|
71
|
+
// Check if game has started
|
|
72
|
+
if (!gameState.hasStarted) {
|
|
73
|
+
(0, utils_1.logError)("Game has not started yet. Cannot advance phases.");
|
|
74
|
+
throw new Error("Game not started");
|
|
75
|
+
}
|
|
76
|
+
const currentPhase = Number(gameState.phase);
|
|
77
|
+
if (currentPhase === TurnPhase.PROPOSING) {
|
|
78
|
+
(0, utils_1.logSection)("Current phase: PROPOSING - Submitting proposals and ending proposing stage");
|
|
79
|
+
// Submit dummy proposals for all players
|
|
80
|
+
const players = [...gameState.players];
|
|
81
|
+
for (let i = 0; i < players.length; i++) {
|
|
82
|
+
(0, utils_1.executeCommand)(`pnpm cli fellowship game propose ${fellowshipId} ${currentGameId} -i ${i} -t "Auto proposal ${gameState.currentTurn}" -b "<p>Automatically generated proposal for turn ${gameState.currentTurn}</p>"`, `Player ${i} submitting proposal`);
|
|
83
|
+
}
|
|
84
|
+
// Get proposing period from game state
|
|
85
|
+
const proposingPeriod = Number(gameState.proposingPhaseDuration);
|
|
86
|
+
(0, utils_1.executeCommand)(`pnpm cli blockchain mine -t ${proposingPeriod}`, "Mining blockchain");
|
|
87
|
+
(0, utils_1.executeCommand)(`pnpm cli fellowship game end-proposing ${fellowshipId} ${currentGameId}`, "Ending proposing phase");
|
|
88
|
+
(0, utils_1.logSuccess)("Advanced to VOTING phase");
|
|
89
|
+
}
|
|
90
|
+
else if (currentPhase === TurnPhase.VOTING) {
|
|
91
|
+
(0, utils_1.logSection)("Current phase: VOTING - Submitting votes and ending voting stage");
|
|
92
|
+
// Get voting period from game state
|
|
93
|
+
const votingPeriod = Number(gameState.votePhaseDuration);
|
|
94
|
+
// Submit dummy votes for all players
|
|
95
|
+
// Each player votes for the next player's proposal (to avoid self-voting)
|
|
96
|
+
const players = [...gameState.players];
|
|
97
|
+
for (let i = 0; i < players.length; i++) {
|
|
98
|
+
const voteArray = new Array(players.length).fill(0);
|
|
99
|
+
// Vote for the next player's proposal (wraps around to 0 if at the end)
|
|
100
|
+
const targetIndex = (i + 1) % players.length;
|
|
101
|
+
voteArray[targetIndex] = 1;
|
|
102
|
+
const voteString = voteArray.join(",");
|
|
103
|
+
(0, utils_1.executeCommand)(`pnpm cli fellowship game vote ${fellowshipId} ${currentGameId} "${voteString}" -i ${i}`, `Player ${i} voting for player ${targetIndex}'s proposal`);
|
|
104
|
+
}
|
|
105
|
+
(0, utils_1.executeCommand)(`pnpm cli blockchain mine -t ${votingPeriod}`, "Mining blockchain");
|
|
106
|
+
(0, utils_1.executeCommand)(`pnpm cli fellowship game end-voting ${fellowshipId} ${currentGameId}`, "Ending voting phase");
|
|
107
|
+
(0, utils_1.logSuccess)("Voting phase completed - moved to next turn or game ended");
|
|
108
|
+
}
|
|
109
|
+
// Check final game state and update game phase in API
|
|
110
|
+
const finalGameState = await gameMaster.getGameState({
|
|
111
|
+
instanceAddress,
|
|
112
|
+
gameId: BigInt(currentGameId),
|
|
113
|
+
});
|
|
114
|
+
const gamePhase = finalGameState.hasEnded ? "Finished" : "In progress";
|
|
115
|
+
await (0, utils_1.storeOrUpdateThreadInApi)({
|
|
116
|
+
threadId: currentGameId,
|
|
117
|
+
fellowshipId: fellowshipId,
|
|
118
|
+
instanceAddress: instanceAddress,
|
|
119
|
+
gamePhase: gamePhase,
|
|
120
|
+
});
|
|
121
|
+
console.log(`✅ Game phase updated to: ${gamePhase}`);
|
|
122
|
+
return currentGameId;
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
(0, utils_1.logError)("Error pushing game to next phase:", error);
|
|
126
|
+
throw error;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Main function to run the pushGameToNextPhase playbook
|
|
131
|
+
*/
|
|
132
|
+
async function runPushGameToNextPhase(args, gameMaster) {
|
|
133
|
+
if (args.length < 2) {
|
|
134
|
+
console.log("Usage: runPushGameToNextPhase <fellowshipId> <instanceAddress> [gameId]");
|
|
135
|
+
console.log(" fellowshipId: number - fellowship ID");
|
|
136
|
+
console.log(" instanceAddress: address - Rankify instance address");
|
|
137
|
+
console.log(" gameId: number (optional) - game ID to advance, if not provided creates new game");
|
|
138
|
+
throw new Error("Invalid arguments");
|
|
139
|
+
}
|
|
140
|
+
const fellowshipId = parseInt(args[0]);
|
|
141
|
+
const instanceAddress = args[1];
|
|
142
|
+
const gameId = args[2] ? parseInt(args[2]) : undefined;
|
|
143
|
+
console.log(`Running push game to next phase with fellowship ${fellowshipId}, instance ${instanceAddress}`);
|
|
144
|
+
if (gameId) {
|
|
145
|
+
console.log(`Advancing existing game ${gameId}`);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
console.log(`No game ID provided - will create new game`);
|
|
149
|
+
}
|
|
150
|
+
console.log(`Using GameMaster: ${gameMaster.walletClient.account?.address}`);
|
|
151
|
+
const resultGameId = await pushToNextPhase(fellowshipId, instanceAddress, gameMaster, gameId);
|
|
152
|
+
(0, utils_1.logSuccess)(`Playbook completed! Game ID: ${resultGameId}`);
|
|
153
|
+
}
|
|
154
|
+
function main() {
|
|
155
|
+
console.log("This script should be run through cliPlaybooks.sh which provides the GameMaster instance");
|
|
156
|
+
console.log("Usage: ./cliPlaybooks.sh push-game-to-next-phase <fellowshipId> <instanceAddress> [gameId]");
|
|
157
|
+
process.exit(1);
|
|
158
|
+
}
|
|
159
|
+
if (require.main === module) {
|
|
160
|
+
main();
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=push-game-to-next-phase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push-game-to-next-phase.js","sourceRoot":"","sources":["../../../../src/cli/playbooks/push-game-to-next-phase.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.executeCommand = executeCommand;
|
|
4
|
+
exports.executeCommandWithOutput = executeCommandWithOutput;
|
|
5
|
+
exports.sleep = sleep;
|
|
6
|
+
exports.logSection = logSection;
|
|
7
|
+
exports.logSuccess = logSuccess;
|
|
8
|
+
exports.logError = logError;
|
|
9
|
+
exports.storeOrUpdateThreadInApi = storeOrUpdateThreadInApi;
|
|
10
|
+
exports.decryptProposalsWithRetry = decryptProposalsWithRetry;
|
|
11
|
+
exports.findProposalPosition = findProposalPosition;
|
|
12
|
+
exports.createGameAndGetId = createGameAndGetId;
|
|
13
|
+
const child_process_1 = require("child_process");
|
|
14
|
+
function executeCommand(command, description) {
|
|
15
|
+
if (description) {
|
|
16
|
+
console.log(`\n${description}`);
|
|
17
|
+
}
|
|
18
|
+
console.log(`Executing: ${command}`);
|
|
19
|
+
try {
|
|
20
|
+
(0, child_process_1.execSync)(command, { stdio: "inherit" });
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
console.error(`Error executing command: ${command}`);
|
|
24
|
+
throw error;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function executeCommandWithOutput(command, description) {
|
|
28
|
+
if (description) {
|
|
29
|
+
console.log(`\n${description}`);
|
|
30
|
+
}
|
|
31
|
+
console.log(`Executing: ${command}`);
|
|
32
|
+
try {
|
|
33
|
+
const output = (0, child_process_1.execSync)(command, { encoding: "utf-8" });
|
|
34
|
+
console.log(output);
|
|
35
|
+
return output;
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
console.error(`Error executing command: ${command}`);
|
|
39
|
+
throw error;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function sleep(seconds) {
|
|
43
|
+
console.log(`Waiting ${seconds} seconds...`);
|
|
44
|
+
(0, child_process_1.execSync)(`sleep ${seconds}`);
|
|
45
|
+
}
|
|
46
|
+
function logSection(title) {
|
|
47
|
+
console.log(`\n=== ${title} ===`);
|
|
48
|
+
}
|
|
49
|
+
function logSuccess(message) {
|
|
50
|
+
console.log(`\n✅ ${message}`);
|
|
51
|
+
}
|
|
52
|
+
function logError(message, error) {
|
|
53
|
+
console.error(`\n❌ ${message}`, error);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Store or update thread in API server
|
|
57
|
+
* Use with owner, threadType, and metadata to create a new thread
|
|
58
|
+
* Use with only gamePhase to update an existing thread
|
|
59
|
+
*/
|
|
60
|
+
async function storeOrUpdateThreadInApi(params) {
|
|
61
|
+
const apiUrl = params.apiUrl || process.env.API_URL;
|
|
62
|
+
if (!apiUrl) {
|
|
63
|
+
console.log("⚠️ API_URL not set, skipping thread operation in API");
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const { threadId, fellowshipId, instanceAddress, gamePhase, owner, threadType, metadata, authToken } = params;
|
|
67
|
+
// Determine if this is a create or update operation
|
|
68
|
+
const isCreate = !!(owner && threadType && metadata);
|
|
69
|
+
const action = isCreate ? "Storing" : "Updating";
|
|
70
|
+
console.log(`\n${action} thread ${threadId} in API server...`);
|
|
71
|
+
try {
|
|
72
|
+
let threadData = {
|
|
73
|
+
id: threadId,
|
|
74
|
+
fellowshipId: fellowshipId,
|
|
75
|
+
instanceAddress: instanceAddress,
|
|
76
|
+
};
|
|
77
|
+
// If creating, include all required fields
|
|
78
|
+
if (isCreate && owner && threadType && metadata) {
|
|
79
|
+
// Fetch metadata from IPFS
|
|
80
|
+
let metadataObject;
|
|
81
|
+
try {
|
|
82
|
+
const ipfsUrl = metadata.replace("ipfs://", process.env.IPFS_GATEWAY || "https://ipfs.io/ipfs/");
|
|
83
|
+
const response = await fetch(ipfsUrl);
|
|
84
|
+
if (!response.ok) {
|
|
85
|
+
throw new Error(`Failed to fetch metadata: ${response.statusText}`);
|
|
86
|
+
}
|
|
87
|
+
metadataObject = await response.json();
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
console.error("Error fetching metadata from IPFS:", error);
|
|
91
|
+
// Use fallback metadata
|
|
92
|
+
metadataObject = {
|
|
93
|
+
name: "Game",
|
|
94
|
+
description: "Rankify game",
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
threadData = {
|
|
98
|
+
...threadData,
|
|
99
|
+
gamePhase: gamePhase || "Registration open",
|
|
100
|
+
owner: owner,
|
|
101
|
+
threadType: threadType,
|
|
102
|
+
metadata: metadataObject,
|
|
103
|
+
canStartEarlyIfFull: false,
|
|
104
|
+
onlyOwnerCanStart: false,
|
|
105
|
+
canStartNextTurnIfFinished: true,
|
|
106
|
+
private: false,
|
|
107
|
+
cronChecked: false,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
else if (gamePhase) {
|
|
111
|
+
// If updating, only include gamePhase
|
|
112
|
+
threadData.gamePhase = gamePhase;
|
|
113
|
+
}
|
|
114
|
+
const headers = {
|
|
115
|
+
"Content-Type": "application/json",
|
|
116
|
+
};
|
|
117
|
+
if (authToken) {
|
|
118
|
+
headers["Cookie"] = `privy-id-token=${authToken}`;
|
|
119
|
+
}
|
|
120
|
+
// Add GM secret to headers
|
|
121
|
+
const gmSecret = process.env.GM_SECRET || process.env.CRON_SECRET;
|
|
122
|
+
if (gmSecret) {
|
|
123
|
+
headers["x-gm-secret"] = gmSecret;
|
|
124
|
+
}
|
|
125
|
+
const response = await fetch(`${apiUrl}/gm/thread/store`, {
|
|
126
|
+
method: "POST",
|
|
127
|
+
headers,
|
|
128
|
+
body: JSON.stringify(threadData),
|
|
129
|
+
});
|
|
130
|
+
if (!response.ok) {
|
|
131
|
+
const errorText = await response.text();
|
|
132
|
+
throw new Error(`API returned ${response.status}: ${errorText}`);
|
|
133
|
+
}
|
|
134
|
+
const result = await response.json();
|
|
135
|
+
if (isCreate) {
|
|
136
|
+
console.log(`✅ Thread stored in API successfully. Code: ${result.code}`);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
console.log(`✅ Thread updated successfully`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
console.error(`Error ${action.toLowerCase()} thread in API:`, error);
|
|
144
|
+
throw error;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Retry a function with exponential backoff
|
|
149
|
+
*/
|
|
150
|
+
async function retryWithBackoff(fn, maxRetries = 3, initialDelayMs = 1000) {
|
|
151
|
+
let lastError;
|
|
152
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
153
|
+
try {
|
|
154
|
+
return await fn();
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
lastError = error;
|
|
158
|
+
console.log(`Attempt ${attempt + 1}/${maxRetries} failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
159
|
+
if (attempt < maxRetries - 1) {
|
|
160
|
+
const delay = initialDelayMs * Math.pow(2, attempt);
|
|
161
|
+
console.log(`Retrying in ${delay}ms...`);
|
|
162
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
throw lastError;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Decrypt proposals with retry logic
|
|
170
|
+
*/
|
|
171
|
+
async function decryptProposalsWithRetry(gameMaster, params, maxRetries = 3) {
|
|
172
|
+
console.log(`Decrypting proposals for turn ${params.turn}...`);
|
|
173
|
+
return await retryWithBackoff(() => gameMaster.decryptProposals(params), maxRetries);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Find the position of a target proposer in the permuted proposals array
|
|
177
|
+
*/
|
|
178
|
+
function findProposalPosition(proposals, players, targetProposerIndex) {
|
|
179
|
+
// Get the proposer's address from the players array
|
|
180
|
+
const targetProposerAddress = players[targetProposerIndex];
|
|
181
|
+
if (!targetProposerAddress) {
|
|
182
|
+
console.log(`Warning: Invalid player index ${targetProposerIndex}`);
|
|
183
|
+
return -1;
|
|
184
|
+
}
|
|
185
|
+
// Find the position of the target proposer in the permuted proposals array
|
|
186
|
+
const targetPosition = proposals.findIndex((p) => p.proposer.toLowerCase() === targetProposerAddress.toLowerCase());
|
|
187
|
+
if (targetPosition === -1) {
|
|
188
|
+
console.log(`Warning: Cannot find proposal from ${targetProposerAddress} in permuted array`);
|
|
189
|
+
}
|
|
190
|
+
return targetPosition;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Execute a create game command and extract the game ID from output
|
|
194
|
+
*/
|
|
195
|
+
function createGameAndGetId(fellowshipId, createIndex, options = {}) {
|
|
196
|
+
const { turns = 3, timeToJoin = 3000, timePerTurn = 3000, voteCredits = 1, metadata = "ipfs://QmZuHWcCaSKBrbquCFwhWMTZ5qmxQGxzQhy8NJgaKsY1J8", } = options;
|
|
197
|
+
// If voting/proposing periods are not set, divide time-per-turn by 2
|
|
198
|
+
const votingPeriod = options.votingPeriod ?? Math.floor(timePerTurn / 2);
|
|
199
|
+
const proposingPeriod = options.proposingPeriod ?? Math.floor(timePerTurn / 2);
|
|
200
|
+
const createOutput = executeCommandWithOutput(`pnpm cli fellowship game create ${fellowshipId} -i ${createIndex} --turns ${turns} --time-to-join ${timeToJoin} --time-per-turn ${timePerTurn} --voting-period ${votingPeriod} --proposing-period ${proposingPeriod} --vote-credits ${voteCredits} --metadata ${metadata}`, `Creating fellowship game in fellowship ${fellowshipId}`);
|
|
201
|
+
// Extract game ID from output: "Game created with ID: 1"
|
|
202
|
+
const gameIdMatch = createOutput.match(/Game created with ID: (\d+)/);
|
|
203
|
+
if (!gameIdMatch) {
|
|
204
|
+
throw new Error("Failed to extract game ID from create command output");
|
|
205
|
+
}
|
|
206
|
+
const gameId = parseInt(gameIdMatch[1]);
|
|
207
|
+
console.log(`\n✅ Captured game ID: ${gameId}`);
|
|
208
|
+
return gameId;
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/cli/playbooks/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,8 +12,9 @@ class MultipassBase {
|
|
|
12
12
|
* @param params - Constructor parameters
|
|
13
13
|
* @param params.chainId - ID of the blockchain network
|
|
14
14
|
* @param params.publicClient - Public client for reading contracts
|
|
15
|
+
* @param params.envioClient - Envio GraphQL client for querying data
|
|
15
16
|
*/
|
|
16
|
-
constructor({ chainId, publicClient }) {
|
|
17
|
+
constructor({ chainId, publicClient, envioClient, }) {
|
|
17
18
|
this.getRegistrarMessage = ({ username, id, domainName, validUntil, }) => {
|
|
18
19
|
return {
|
|
19
20
|
name: (0, viem_1.stringToHex)(username, { size: 32 }),
|
|
@@ -31,14 +32,14 @@ class MultipassBase {
|
|
|
31
32
|
* @param params.targetDomain - Target domain to be encoded in the query
|
|
32
33
|
* @returns The generated name query
|
|
33
34
|
*/
|
|
34
|
-
this.formQueryByAddress = ({ address, domainName, targetDomain, }) => {
|
|
35
|
+
this.formQueryByAddress = ({ address, domainName, targetDomain, useBytes32, }) => {
|
|
35
36
|
if (!(0, viem_1.isAddress)(address))
|
|
36
37
|
throw new Error("formQueryByAddress: is not a valid address");
|
|
37
38
|
return {
|
|
38
39
|
name: (0, viem_1.stringToHex)("", { size: 32 }),
|
|
39
40
|
id: (0, viem_1.stringToHex)("", { size: 32 }),
|
|
40
41
|
wallet: address,
|
|
41
|
-
domainName: (0, viem_1.stringToHex)(domainName, { size: 32 }),
|
|
42
|
+
domainName: useBytes32 ? this.getShortStringBytes32(domainName) : (0, viem_1.stringToHex)(domainName, { size: 32 }),
|
|
42
43
|
targetDomain: (0, viem_1.stringToHex)(targetDomain ?? "", { size: 32 }),
|
|
43
44
|
};
|
|
44
45
|
};
|
|
@@ -117,8 +118,7 @@ class MultipassBase {
|
|
|
117
118
|
};
|
|
118
119
|
this.chainId = chainId;
|
|
119
120
|
this.publicClient = publicClient;
|
|
120
|
-
|
|
121
|
-
this.creationBlock = BigInt(receipt.blockNumber);
|
|
121
|
+
this.envioClient = envioClient;
|
|
122
122
|
}
|
|
123
123
|
/**
|
|
124
124
|
* Generates a URL for a dapp
|
|
@@ -139,6 +139,22 @@ class MultipassBase {
|
|
|
139
139
|
"&chainId=" +
|
|
140
140
|
this.chainId);
|
|
141
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Convert a string to bytes32 format with length encoded in the last byte (UBI format)
|
|
144
|
+
* @param text - The string to convert
|
|
145
|
+
* @returns Hex string representing the bytes32 value
|
|
146
|
+
*/
|
|
147
|
+
getShortStringBytes32(text) {
|
|
148
|
+
const utf8Bytes = (0, viem_1.stringToBytes)(text);
|
|
149
|
+
const len = utf8Bytes.length;
|
|
150
|
+
if (len > 31) {
|
|
151
|
+
throw new Error(`String "${text}" is too long for a bytes32. Maximum length is 31 bytes.`);
|
|
152
|
+
}
|
|
153
|
+
const bytes32Array = new Uint8Array(32);
|
|
154
|
+
bytes32Array.set(utf8Bytes);
|
|
155
|
+
bytes32Array[31] = len;
|
|
156
|
+
return (0, viem_1.toHex)(bytes32Array);
|
|
157
|
+
}
|
|
142
158
|
getContractAddress() {
|
|
143
159
|
const artifact = (0, utils_1.getArtifact)(this.chainId, "Multipass");
|
|
144
160
|
return artifact.address;
|
|
@@ -190,50 +206,26 @@ class MultipassBase {
|
|
|
190
206
|
* @returns Array of domains with their states
|
|
191
207
|
*/
|
|
192
208
|
async listDomains(onlyActive) {
|
|
193
|
-
const initializedFilter = await this.
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
fromBlock: this.creationBlock,
|
|
197
|
-
eventName: "InitializedDomain",
|
|
198
|
-
});
|
|
199
|
-
const activatedFilter = await this.publicClient.getContractEvents({
|
|
200
|
-
address: this.getContractAddress(),
|
|
201
|
-
abi: abis_1.MultipassAbi,
|
|
202
|
-
fromBlock: 0n,
|
|
203
|
-
eventName: "DomainActivated",
|
|
204
|
-
});
|
|
205
|
-
const deactivatedFilter = await this.publicClient.getContractEvents({
|
|
206
|
-
address: this.getContractAddress(),
|
|
207
|
-
abi: abis_1.MultipassAbi,
|
|
208
|
-
fromBlock: 0n,
|
|
209
|
-
eventName: "DomainDeactivated",
|
|
210
|
-
});
|
|
209
|
+
const initializedFilter = await this.envioClient.getMultipassInitializedDomainEvents({});
|
|
210
|
+
const activatedFilter = await this.envioClient.getMultipassDomainActivatedEvents({});
|
|
211
|
+
const deactivatedFilter = await this.envioClient.getMultipassDomainDeactivatedEvents({});
|
|
211
212
|
const domains = new Map();
|
|
212
213
|
// Process initialized domains
|
|
213
214
|
for (const event of initializedFilter) {
|
|
214
|
-
const
|
|
215
|
-
|
|
216
|
-
continue;
|
|
217
|
-
const domainState = await this.getDomainState(args.domainName);
|
|
218
|
-
domains.set(args.domainName, domainState);
|
|
215
|
+
const domainState = await this.getDomainState(event.domainName);
|
|
216
|
+
domains.set(event.domainName, domainState);
|
|
219
217
|
}
|
|
220
218
|
// Update active status
|
|
221
219
|
for (const event of activatedFilter) {
|
|
222
|
-
const
|
|
223
|
-
if (!args || !domains.has(args.domainName))
|
|
224
|
-
continue;
|
|
225
|
-
const domain = domains.get(args.domainName);
|
|
220
|
+
const domain = domains.get(event.domainName);
|
|
226
221
|
domain.isActive = true;
|
|
227
|
-
domains.set(
|
|
222
|
+
domains.set(event.domainName, domain);
|
|
228
223
|
}
|
|
229
224
|
// Update deactive status
|
|
230
225
|
for (const event of deactivatedFilter) {
|
|
231
|
-
const
|
|
232
|
-
if (!args || !domains.has(args.domainName))
|
|
233
|
-
continue;
|
|
234
|
-
const domain = domains.get(args.domainName);
|
|
226
|
+
const domain = domains.get(event.domainName);
|
|
235
227
|
domain.isActive = false;
|
|
236
|
-
domains.set(
|
|
228
|
+
domains.set(event.domainName, domain);
|
|
237
229
|
}
|
|
238
230
|
let result = Array.from(domains.values());
|
|
239
231
|
if (onlyActive) {
|
|
@@ -247,24 +239,9 @@ class MultipassBase {
|
|
|
247
239
|
* @returns Array of records with their states
|
|
248
240
|
*/
|
|
249
241
|
async listRecords(onlyActive) {
|
|
250
|
-
const registeredFilterP = this.
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
fromBlock: this.creationBlock,
|
|
254
|
-
eventName: "Registered",
|
|
255
|
-
});
|
|
256
|
-
const renewedFilterP = this.publicClient.getContractEvents({
|
|
257
|
-
address: this.getContractAddress(),
|
|
258
|
-
abi: abis_1.MultipassAbi,
|
|
259
|
-
fromBlock: this.creationBlock,
|
|
260
|
-
eventName: "Renewed",
|
|
261
|
-
});
|
|
262
|
-
const deletedFilterP = this.publicClient.getContractEvents({
|
|
263
|
-
address: this.getContractAddress(),
|
|
264
|
-
abi: abis_1.MultipassAbi,
|
|
265
|
-
fromBlock: this.creationBlock,
|
|
266
|
-
eventName: "nameDeleted",
|
|
267
|
-
});
|
|
242
|
+
const registeredFilterP = this.envioClient.getMultipassRegisteredEvents({});
|
|
243
|
+
const renewedFilterP = this.envioClient.getMultipassRenewedEvents({});
|
|
244
|
+
const deletedFilterP = this.envioClient.getMultipassNameDeletedEvents({});
|
|
268
245
|
const [registeredFilter, renewedFilter, deletedFilter] = await Promise.all([
|
|
269
246
|
registeredFilterP,
|
|
270
247
|
renewedFilterP,
|
|
@@ -273,26 +250,17 @@ class MultipassBase {
|
|
|
273
250
|
const records = new Map();
|
|
274
251
|
// Process registered records
|
|
275
252
|
for (const event of registeredFilter) {
|
|
276
|
-
const
|
|
277
|
-
|
|
278
|
-
continue;
|
|
279
|
-
const key = `${args.NewRecord.name}-${args.NewRecord.id}-${args.NewRecord.domainName}`;
|
|
280
|
-
records.set(key, { record: args.NewRecord, isActive: true });
|
|
253
|
+
const key = `${event.name}-${event.userId}-${event.domainName}`;
|
|
254
|
+
records.set(key, { record: event, isActive: true });
|
|
281
255
|
}
|
|
282
256
|
// Update renewed records
|
|
283
257
|
for (const event of renewedFilter) {
|
|
284
|
-
const
|
|
285
|
-
|
|
286
|
-
continue;
|
|
287
|
-
const key = `${args.newRecord.name}-${args.newRecord.id}-${args.newRecord.domainName}`;
|
|
288
|
-
records.set(key, { record: args.newRecord, isActive: true });
|
|
258
|
+
const key = `${event.name}-${event.userId}-${event.domainName}`;
|
|
259
|
+
records.set(key, { record: event, isActive: true });
|
|
289
260
|
}
|
|
290
261
|
// Update deleted records
|
|
291
262
|
for (const event of deletedFilter) {
|
|
292
|
-
const
|
|
293
|
-
if (!args)
|
|
294
|
-
continue;
|
|
295
|
-
const key = `${args.name}-${args.id}-${args.domainName}`;
|
|
263
|
+
const key = `${event.name}-${event.userId}-${event.domainName}`;
|
|
296
264
|
if (records.has(key)) {
|
|
297
265
|
const record = records.get(key);
|
|
298
266
|
record.isActive = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultipassBase.js","sourceRoot":"","sources":["../../../src/multipass/MultipassBase.ts"],"names":[],"mappings":";;AAAA,+
|
|
1
|
+
{"version":3,"file":"MultipassBase.js","sourceRoot":"","sources":["../../../src/multipass/MultipassBase.ts"],"names":[],"mappings":"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"}
|