syntax = "proto3";
package secret.compute.v1beta1;

import "gogoproto/gogo.proto";
import "secret/compute/v1beta1/types.proto";

option go_package = "github.com/enigmampc/SecretNetwork/x/compute/internal/types";

// GenesisState - genesis state of x/wasm
message GenesisState {
//    Params params = 1 [(gogoproto.nullable) = false];
    repeated Code codes = 2 [(gogoproto.nullable) = false, (gogoproto.jsontag) = "codes,omitempty"];
    repeated Contract contracts = 3 [(gogoproto.nullable) = false, (gogoproto.jsontag) = "contracts,omitempty"];
    repeated Sequence sequences = 4 [(gogoproto.nullable) = false, (gogoproto.jsontag) = "sequences,omitempty"];
}

// Code struct encompasses CodeInfo and CodeBytes
message Code {
    uint64 code_id = 1 [(gogoproto.customname) = "CodeID"];
    CodeInfo code_info = 2 [(gogoproto.nullable) = false];
    bytes code_bytes = 3;
}

// Contract struct encompasses ContractAddress, ContractInfo, and ContractState
message Contract {
    bytes contract_address = 1 [(gogoproto.casttype) = "github.com/cosmos/cosmos-sdk/types.AccAddress"];
    ContractInfo contract_info = 2 [(gogoproto.nullable) = false];
    repeated Model contract_state = 3 [(gogoproto.nullable) = false];
    ContractCustomInfo contract_custom_info = 4;
}

// Sequence id and value of a counter
message Sequence {
    bytes id_key = 1 [(gogoproto.customname) = "IDKey"];
    uint64 value = 2;
}