status-go/signal/events_community_tokens.go
Sale Djenic bf1ef87cc0 chore(wallet-community)_: move community transactions to the wallet router
- new file `contracts/community-tokens/contracts.go` added to unify contracts creation

- the following community related path processors added:
- `CommunityBurnProcessor`
- `CommunityDeployAssetsProcessor`
- `CommunityDeployCollectiblesProcessor`
- `CommunityDeployOwnerTokenProcessor`
- `CommunityMintTokensProcessor`
- `CommunityRemoteBurnProcessor`
- `CommunitySetSignerPubKeyProcessor`

- `SendType` extended with appropriate options

- added endpoints to duplicated `communitytokens` api:
- `StoreDeployedCollectibles`
- `StoreDeployedOwnerToken`
- `StoreDeployedAssets`

- removed endpoints from duplicated `communitytokens` api:
- `DeployCollectibles`
- `DeployOwnerToken`
- `ReTrackOwnerTokenDeploymentTransaction`
- `DeployAssets`
- `DeployCollectiblesEstimate`
- `DeployAssetsEstimate`
- `DeployOwnerTokenEstimate`
- `EstimateMintTokens`
- `EstimateRemoteBurn`
- `EstimateBurn`
- `EstimateSetSignerPubKey`
- `NewOwnerTokenInstance`
- `NewCommunityTokenDeployerInstance`
- `NewCommunityOwnerTokenRegistryInstance`
- `NewCollectiblesInstance`
- `NewAssetsInstance`
- `MintTokens`
- `RemoteBurn`
- `GetCollectiblesContractInstance`
- `GetAssetContractInstance`
- `Burn`
- `SetSignerPubKey`

- `Path` type extended with new property:
- `UsedContractAddress` - an address of the contract that will be used for the transaction
2025-01-30 14:56:13 +01:00

54 lines
2.5 KiB
Go

package signal
import (
"github.com/ethereum/go-ethereum/common"
"github.com/status-im/status-go/protocol/communities/token"
"github.com/status-im/status-go/protocol/protobuf"
)
const (
// EventCommunityTokenTransactionStatusChanged is triggered when community token contract
// transaction changed its status
EventCommunityTokenTransactionStatusChanged = "communityToken.communityTokenTransactionStatusChanged"
// EventCommunityTokenAction is triggered when the app receives a message that
// owner or some other token master did some token action, like: airdrop, burn, remote destruct
EventCommunityTokenAction = "communityToken.communityTokenAction"
)
type CommunityTokenTransactionSignal struct {
SendType int `json:"sendType"`
Success bool `json:"success"` // transaction's status
Hash common.Hash `json:"hash"` // transaction hash
CommunityToken *token.CommunityToken `json:"communityToken,omitempty"` // community token changed by transaction
OwnerToken *token.CommunityToken `json:"ownerToken,omitempty"` // owner token emitted by deployment transaction
MasterToken *token.CommunityToken `json:"masterToken,omitempty"` // master token emitted by deployment transaction
ErrorString string `json:"errorString"` // information about failed operation
}
func SendCommunityTokenTransactionStatusSignal(sendType int, success bool, hash common.Hash,
communityToken *token.CommunityToken, ownerToken *token.CommunityToken, masterToken *token.CommunityToken, errorString string) {
send(EventCommunityTokenTransactionStatusChanged, CommunityTokenTransactionSignal{
SendType: sendType,
Success: success,
Hash: hash,
CommunityToken: communityToken,
OwnerToken: ownerToken,
MasterToken: masterToken,
ErrorString: errorString,
})
}
type CommunityTokenActionSignal struct {
CommunityToken *token.CommunityToken `json:"communityToken"` // community token changed by the other owner/master
ActionType protobuf.CommunityTokenAction_ActionType `json:"actionType"` // type od action made by the other owner/master
}
func SendCommunityTokenActionSignal(communityToken *token.CommunityToken, actionType protobuf.CommunityTokenAction_ActionType) {
send(EventCommunityTokenAction, CommunityTokenActionSignal{
CommunityToken: communityToken,
ActionType: actionType,
})
}