package types import ( "github.com/tendermint/tendermint/wire" ) //--------------------------------------------------------------------------------------------------- // PermissionsTx.PermArgs interface and argument encoding // Arguments are a registered interface in the PermissionsTx, // so binary handles the arguments and each permission function gets a type-byte // PermFlag() maps the type-byte to the permission // The account sending the PermissionsTx must have this PermFlag set type PermArgs interface { PermFlag() PermFlag } const ( PermArgsTypeHasBase = byte(0x01) PermArgsTypeSetBase = byte(0x02) PermArgsTypeUnsetBase = byte(0x03) PermArgsTypeSetGlobal = byte(0x04) PermArgsTypeHasRole = byte(0x05) PermArgsTypeAddRole = byte(0x06) PermArgsTypeRmRole = byte(0x07) ) // for wire.readReflect var _ = wire.RegisterInterface( struct{ PermArgs }{}, wire.ConcreteType{&HasBaseArgs{}, PermArgsTypeHasBase}, wire.ConcreteType{&SetBaseArgs{}, PermArgsTypeSetBase}, wire.ConcreteType{&UnsetBaseArgs{}, PermArgsTypeUnsetBase}, wire.ConcreteType{&SetGlobalArgs{}, PermArgsTypeSetGlobal}, wire.ConcreteType{&HasRoleArgs{}, PermArgsTypeHasRole}, wire.ConcreteType{&AddRoleArgs{}, PermArgsTypeAddRole}, wire.ConcreteType{&RmRoleArgs{}, PermArgsTypeRmRole}, ) type HasBaseArgs struct { Address []byte `json:"address"` Permission PermFlag `json:"permission"` } func (*HasBaseArgs) PermFlag() PermFlag { return HasBase } type SetBaseArgs struct { Address []byte `json:"address"` Permission PermFlag `json:"permission"` Value bool `json:"value"` } func (*SetBaseArgs) PermFlag() PermFlag { return SetBase } type UnsetBaseArgs struct { Address []byte `json:"address"` Permission PermFlag `json:"permission"` } func (*UnsetBaseArgs) PermFlag() PermFlag { return UnsetBase } type SetGlobalArgs struct { Permission PermFlag `json:"permission"` Value bool `json:"value"` } func (*SetGlobalArgs) PermFlag() PermFlag { return SetGlobal } type HasRoleArgs struct { Address []byte `json:"address"` Role string `json:"role"` } func (*HasRoleArgs) PermFlag() PermFlag { return HasRole } type AddRoleArgs struct { Address []byte `json:"address"` Role string `json:"role"` } func (*AddRoleArgs) PermFlag() PermFlag { return AddRole } type RmRoleArgs struct { Address []byte `json:"address"` Role string `json:"role"` } func (*RmRoleArgs) PermFlag() PermFlag { return RmRole }