syntax = "proto3"; package smartnoise; message BoolNull {oneof data {bool option = 1;}} message I64Null {oneof data {int64 option = 1;}} message F64Null {oneof data {double option = 1;}} message StrNull {oneof data {string option = 1;}} message Array1dBoolNull { repeated BoolNull data = 1; } message Array1dI64Null { repeated I64Null data = 1; } message Array1dF64Null { repeated F64Null data = 1; } message Array1dStrNull { repeated StrNull data = 1; } message Array1dNull { oneof data { Array1dBoolNull bool = 1; Array1dI64Null i64 = 2; Array1dF64Null f64 = 3; Array1dStrNull string = 4; } } message Array1dBool { repeated bool data = 1; } message Array1dI64 { repeated int64 data = 1; } message Array1dF64 { repeated double data = 1; } message Array1dStr { repeated string data = 1; } message Array1d { oneof data { Array1dBool bool = 1; Array1dI64 i64 = 2; Array1dF64 f64 = 3; Array1dStr string = 4; } } // N-dimensional homogeneously typed array message Array { Array1d flattened = 1; // length of axes repeated uint64 shape = 2; } enum DataType { UNKNOWN = 0; BOOL = 1; I64 = 2; F64 = 3; STRING = 4; } message Jagged { repeated Array1d data = 1; DataType data_type = 2; } message PrivacyUsage { message DistanceApproximate { double epsilon = 1; double delta = 2; } oneof distance { DistanceApproximate approximate = 1; } } message PrivacyUsages { repeated PrivacyUsage values = 1; } message ArgumentNodeIds { repeated IndexKey keys = 1; repeated uint32 values = 2; } message IndexKey { message Tuple { repeated IndexKey values = 1; } oneof key { string str = 1; int64 i64 = 2; bool bool = 3; Tuple tuple = 4; } }