syntax = "proto3";

option csharp_namespace = "AElf.Kernel";
import "google/protobuf/timestamp.proto";
import "common.proto";
import "kernel.proto";

message Authorization
{
    Address MultiSigAccount = 1;
    uint32 ExecutionThreshold = 2;
    uint32 ProposerThreshold = 3;
    repeated Reviewer Reviewers = 4;
}

message Reviewer
{
    bytes PubKey = 1;
    uint32 Weight = 2;
}

message Proposal {
    Address MultiSigAccount = 1;
    string Name = 2;
    bytes TxnData = 3;
    double ExpiredTime = 4; //in second
    ProposalStatus Status = 5;
    Address Proposer = 6;
}

enum ProposalStatus {
    ToBeDecided = 0;
    Decided = 1;
    Released = 2;
}

message Approved {
    Hash ProposalHash = 1;
    repeated Approval Approvals = 5;
}

message Approval
{
    Hash ProposalHash = 1;
    bytes Signature = 2;
}