feat: contract codegen baseline - add proto code generation for client and server
- Add proto files for backtest and market domains - Generate Go code in packages/contracts/gen/go - Generate Dart code in apps/client/lib/src/generated - Add contracts-gen and contracts-check binaries - Update pubspec.yaml with protoc dependencies - Update go.work with new module
This commit is contained in:
parent
fe7604b0fd
commit
88c673d973
31 changed files with 5130 additions and 15 deletions
|
|
@ -26,31 +26,24 @@ proto-socket을 transport로 유지하면서 ALT application protobuf 계약을
|
||||||
- contract compatibility note
|
- contract compatibility note
|
||||||
- generated output 검증 명령
|
- generated output 검증 명령
|
||||||
|
|
||||||
## 필수 기능
|
## 기능
|
||||||
|
|
||||||
### Epic: [contracts] Contract schema and codegen
|
### Epic: [contracts] Contract schema and codegen
|
||||||
|
|
||||||
ALT application protobuf 계약과 generated output 검증 흐름을 묶는다.
|
ALT application protobuf 계약과 generated output 검증 흐름을 묶는다.
|
||||||
|
|
||||||
- [ ] [schema-baseline] `common.proto`, `market.proto`, `backtest.proto`가 MVP payload 기준을 담는다.
|
- [ ] [schema-baseline] `common.proto`, `market.proto`, `backtest.proto`가 MVP payload 기준을 담는다.
|
||||||
- [ ] [go-codegen] Go generated contract를 반복 생성할 수 있는 명령이 있다.
|
- [ ] [go-codegen] Go generated contract를 반복 생성할 수 있는 명령이 있다. 검증: 문서화된 Go contract generation 명령이 로컬에서 실행된다.
|
||||||
- [ ] [dart-codegen] Flutter client가 사용할 Dart generated contract를 반복 생성할 수 있는 명령이 있다.
|
- [ ] [dart-codegen] Flutter client가 사용할 Dart generated contract를 반복 생성할 수 있는 명령이 있다. 검증: 문서화된 Dart contract generation 명령이 로컬에서 실행된다.
|
||||||
- [ ] [parser-map] API/client에서 contract message parser map을 구성할 표준 위치와 패턴이 정해져 있다.
|
- [ ] [parser-map] API/client에서 contract message parser map을 구성할 표준 위치와 패턴이 정해져 있다.
|
||||||
- [ ] [compat-note] additive change, field number, versioning 기준이 contracts 문서에 정리되어 있다.
|
- [ ] [compat-note] additive change, field number, versioning 기준과 proto-socket transport proto / ALT application proto 책임 분리가 contracts 문서에 정리되어 있다.
|
||||||
- [ ] [contract-check] root 검증 또는 contracts 검증 명령이 schema/codegen drift를 감지한다.
|
- [ ] [contract-check] root 검증 또는 contracts 검증 명령이 schema/codegen drift를 감지한다. 검증: generated output을 source schema와 대조할 수 있고 `bin/test`, `bin/lint`가 contract 변경 후 통과한다.
|
||||||
|
|
||||||
## 완료 기준
|
|
||||||
|
|
||||||
- [ ] Go와 Dart contract generation 명령이 문서화되어 있고 로컬에서 실행된다.
|
|
||||||
- [ ] generated output은 source schema와 함께 검증할 수 있다.
|
|
||||||
- [ ] proto-socket transport proto와 ALT application proto의 책임이 문서에서 분리되어 있다.
|
|
||||||
- [ ] `bin/test`와 `bin/lint`가 contract 변경 후 통과한다.
|
|
||||||
|
|
||||||
## 완료 리뷰
|
## 완료 리뷰
|
||||||
|
|
||||||
- 상태: 없음
|
- 상태: 없음
|
||||||
- 요청일: 없음
|
- 요청일: 없음
|
||||||
- 완료 근거: 아직 필수 기능과 완료 기준이 충족되지 않았다.
|
- 완료 근거: 아직 기능 Task와 Task별 검증이 충족되지 않았다.
|
||||||
- 리뷰 필요:
|
- 리뷰 필요:
|
||||||
- [ ] 사용자가 완료 결과를 확인했다
|
- [ ] 사용자가 완료 결과를 확인했다
|
||||||
- [ ] archive 이동을 승인했다
|
- [ ] archive 이동을 승인했다
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,111 @@
|
||||||
|
<!-- task=m-contract-codegen-baseline/03+02_api_parser_map plan=0 tag=API -->
|
||||||
|
|
||||||
|
# Code Review Reference - API
|
||||||
|
|
||||||
|
> **[IMPLEMENTING AGENT — READ FIRST] Filling in this file is the mandatory final step of implementation.**
|
||||||
|
> The task is NOT complete until every implementation-owned section below is filled in.
|
||||||
|
> Complete the `구현 체크리스트`; the final checklist item is mandatory before saving.
|
||||||
|
> Fill implementation-owned sections, then stop with active files in place and report ready for review.
|
||||||
|
> Finalization (`코드리뷰 결과`, log rename, `complete.log`, archive moves, `코드리뷰 전용 체크리스트`) is review-agent-only, even after compaction/resume.
|
||||||
|
> Follow the ownership table at the bottom of this file for which sections you own.
|
||||||
|
|
||||||
|
## 개요
|
||||||
|
|
||||||
|
date=2026-05-28
|
||||||
|
task=m-contract-codegen-baseline/03+02_api_parser_map, plan=0, tag=API
|
||||||
|
|
||||||
|
## 이 파일을 읽는 리뷰 에이전트에게
|
||||||
|
|
||||||
|
> **[REVIEW AGENT ONLY]** 아래 종결 절차는 코드리뷰 에이전트 전용이다. 구현 에이전트는 이 섹션을 실행하지 않는다.
|
||||||
|
|
||||||
|
각 항목의 구현을 실제 소스 파일과 대조하고, `검증 결과` 섹션의 출력이 코드와 일치하는지 확인하세요.
|
||||||
|
리뷰 완료는 아래 순서까지 끝난 상태를 의미합니다.
|
||||||
|
|
||||||
|
1. 판정을 append한다.
|
||||||
|
2. `CODE_REVIEW-cloud-G06.md` → `code_review_cloud_G06_N.log`, `PLAN-cloud-G06.md` → `plan_cloud_G06_M.log`로 아카이브한다.
|
||||||
|
3. PASS이면 `complete.log` 작성 후 active task 디렉터리를 `agent-task/archive/YYYY/MM/m-contract-codegen-baseline/03+02_api_parser_map/`로 이동한다. WARN/FAIL이면 user-review gate를 확인한 뒤 다음 active plan/review 파일 또는 `USER_REVIEW.md`를 작성한다. `USER_REVIEW.md`가 사용자 결정으로 완료/PASS 해소되면 code-review가 `USER_REVIEW.md`를 해소 상태로 갱신하고 `complete.log` 작성 후 archive 이동한다.
|
||||||
|
4. PASS이고 task group이 `m-<milestone-slug>`이면 완료 이벤트 메타데이터를 보고한다. roadmap 상태 체크와 `update-roadmap` 호출은 런타임 책임이다.
|
||||||
|
5. 적용 가능한 `코드리뷰 전용 체크리스트` 항목을 최종 `.log` 위치에서 체크한 뒤 보고한다.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 구현 항목별 완료 여부
|
||||||
|
|
||||||
|
| 항목 | 완료 여부 |
|
||||||
|
|------|---------|
|
||||||
|
| [API-1] API contract parser map helper | [ ] |
|
||||||
|
| [API-2] Wire parser map into socket server | [ ] |
|
||||||
|
|
||||||
|
## 구현 체크리스트
|
||||||
|
|
||||||
|
- [ ] [API-1] API 내부 contract parser map helper와 unit test를 추가한다.
|
||||||
|
- [ ] [API-2] socket server construction이 API parser map을 사용하도록 연결하고 module dependency를 정리한다.
|
||||||
|
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.
|
||||||
|
|
||||||
|
## 코드리뷰 전용 체크리스트
|
||||||
|
|
||||||
|
> **[REVIEW AGENT ONLY]** 이 체크리스트는 코드리뷰 에이전트만 사용한다.
|
||||||
|
> 구현 에이전트는 이 섹션을 수정하거나 체크하지 않는다.
|
||||||
|
|
||||||
|
- [ ] `코드리뷰 결과`에 `PASS`, `WARN`, `FAIL` 중 하나의 판정을 append한다.
|
||||||
|
- [ ] 판정과 `차원별 평가`, Required/Suggested/Nit 분류가 서로 일치한다.
|
||||||
|
- [ ] active `CODE_REVIEW-*-G??.md`를 `code_review_cloud_G06_N.log`로 아카이브한다.
|
||||||
|
- [ ] active `PLAN-*-G??.md`를 `plan_cloud_G06_M.log`로 아카이브한다.
|
||||||
|
- [ ] PASS이면 `agent-ops/skills/common/code-review/templates/complete-log-template.md` 기준으로 `complete.log`를 작성하고 active `.md` 파일을 남기지 않는다.
|
||||||
|
- [ ] PASS이면 active task 디렉터리 `agent-task/m-contract-codegen-baseline/03+02_api_parser_map/`를 `agent-task/archive/YYYY/MM/m-contract-codegen-baseline/03+02_api_parser_map/`로 이동하고 최종 archive 경로에서 이 체크리스트를 갱신한다.
|
||||||
|
- [ ] PASS이고 task group이 `m-<milestone-slug>`이면 런타임이 읽을 완료 이벤트 메타데이터를 보고하고, roadmap 수정이나 `update-roadmap` 직접 호출을 하지 않는다.
|
||||||
|
- [ ] PASS split 작업이면 이동 후 빈 active parent `agent-task/m-contract-codegen-baseline/`를 제거하거나, 남은 sibling/file이 있어 유지했다고 확인한다.
|
||||||
|
- [ ] WARN/FAIL이고 user-review gate가 트리거되지 않았으면 다음 active `PLAN-cloud-G06.md`와 `CODE_REVIEW-cloud-G06.md`를 작성하고 `complete.log`를 작성하지 않는다.
|
||||||
|
- [ ] USER_REVIEW이면 `agent-ops/skills/common/code-review/templates/user-review-template.md` 기준으로 `USER_REVIEW.md`를 작성하고 active `PLAN-*.md`, `CODE_REVIEW-*.md`, `complete.log`를 남기지 않는다.
|
||||||
|
- [ ] USER_REVIEW가 사용자 결정으로 완료/PASS 해소되면 `USER_REVIEW.md`를 해소 상태로 갱신하고 `complete.log`를 작성한 뒤 task directory를 archive로 이동한다.
|
||||||
|
|
||||||
|
## 계획 대비 변경 사항
|
||||||
|
|
||||||
|
_구현 에이전트가 계획과 다르게 구현한 부분을 이유와 함께 기록한다._
|
||||||
|
|
||||||
|
## 주요 설계 결정
|
||||||
|
|
||||||
|
_구현 에이전트가 주요 설계 결정 사항을 기록한다._
|
||||||
|
|
||||||
|
## 리뷰어를 위한 체크포인트
|
||||||
|
|
||||||
|
- API parser map이 모든 generated request/response payload를 등록하는지 확인한다.
|
||||||
|
- parser helper가 package-level mutable map을 공유하지 않는지 확인한다.
|
||||||
|
- `server.go`가 empty parser map 대신 API parser map을 쓰는지 확인한다.
|
||||||
|
|
||||||
|
## 검증 결과
|
||||||
|
|
||||||
|
_구현 에이전트가 각 중간 검증 및 최종 검증 명령 실행 후 출력을 여기에 붙여 넣는다._
|
||||||
|
|
||||||
|
필수 규칙:
|
||||||
|
- 검증 명령은 고정된 계약이다. 임의로 대체하지 않는다.
|
||||||
|
- 대체가 필요하면 `계획 대비 변경 사항`에 이유와 대체 명령을 기록한다.
|
||||||
|
- `검증 결과`에는 실제 stdout/stderr를 붙여 넣는다.
|
||||||
|
|
||||||
|
### API-1 중간 검증
|
||||||
|
```bash
|
||||||
|
$ cd services/api && go test ./internal/contracts
|
||||||
|
(output)
|
||||||
|
```
|
||||||
|
|
||||||
|
### API-2 중간 검증
|
||||||
|
```bash
|
||||||
|
$ cd services/api && go test ./...
|
||||||
|
(output)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 최종 검증
|
||||||
|
```bash
|
||||||
|
$ cd services/api && go test ./...
|
||||||
|
(output)
|
||||||
|
$ bin/test
|
||||||
|
(output)
|
||||||
|
$ bin/lint
|
||||||
|
(output)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
> **[IMPLEMENTING AGENT — BEFORE SAVING] Have you filled in every implementation-owned section: completion table, implementation checklist, changes from plan, design decisions, and verification output?**
|
||||||
|
> If anything is blank, go back and fill it in before saving this file.
|
||||||
|
> Leave review-agent-only sections unchanged.
|
||||||
|
|
@ -0,0 +1,188 @@
|
||||||
|
<!-- task=m-contract-codegen-baseline/03+02_api_parser_map plan=0 tag=API -->
|
||||||
|
|
||||||
|
# Plan - API Parser Map
|
||||||
|
|
||||||
|
## 이 파일을 읽는 구현 에이전트에게
|
||||||
|
|
||||||
|
`CODE_REVIEW-*-G??.md`의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 반드시 채운다. 검증 명령을 실행하고 실제 stdout/stderr를 기록한 뒤 active 파일을 그대로 두고 리뷰 준비를 보고한다. 최종화는 code-review 스킬 전용이다.
|
||||||
|
|
||||||
|
## 배경
|
||||||
|
|
||||||
|
Go API는 proto-socket session boundary를 맡지만 현재 ALT application payload parser map을 등록하지 않는다. `02+01_codegen_check`가 generated Go contracts를 만든 뒤, API 내부에 표준 parser map 위치를 두면 다음 `Socket Session Loop` Milestone에서 handshake/request-response를 바로 얹을 수 있다.
|
||||||
|
|
||||||
|
## 분석 결과
|
||||||
|
|
||||||
|
### 읽은 파일
|
||||||
|
|
||||||
|
- `agent-roadmap/current.md`
|
||||||
|
- `agent-roadmap/phase/foundation-alignment/PHASE.md`
|
||||||
|
- `agent-roadmap/phase/foundation-alignment/milestones/contract-codegen-baseline.md`
|
||||||
|
- `agent-ops/rules/project/domain/api/rules.md`
|
||||||
|
- `agent-ops/rules/project/domain/contracts/rules.md`
|
||||||
|
- `services/api/go.mod`
|
||||||
|
- `services/api/internal/socket/server.go`
|
||||||
|
- `services/api/internal/config/config.go`
|
||||||
|
- `services/api/cmd/alt-api/main.go`
|
||||||
|
- `packages/contracts/proto/alt/v1/common.proto`
|
||||||
|
- `packages/contracts/proto/alt/v1/market.proto`
|
||||||
|
- `packages/contracts/proto/alt/v1/backtest.proto`
|
||||||
|
- `../proto-socket/go/communicator.go`
|
||||||
|
- `bin/test`
|
||||||
|
- `bin/lint`
|
||||||
|
|
||||||
|
### 테스트 커버리지 공백
|
||||||
|
|
||||||
|
- API parser map helper: 기존 테스트 없음. 새 unit test가 모든 ALT request/response/result message key와 parse success를 검증해야 한다.
|
||||||
|
- `socket.NewServer` parser map 주입: 기존 테스트 없음. 최소한 helper가 non-empty이고 server construction이 컴파일되는 것을 `go test ./...`로 검증한다.
|
||||||
|
|
||||||
|
### 심볼 참조
|
||||||
|
|
||||||
|
- renamed/removed symbols: none.
|
||||||
|
|
||||||
|
### 분할 판단
|
||||||
|
|
||||||
|
분할 정책을 먼저 평가했다. 이 plan은 `03+02_api_parser_map`이며 `02+01_codegen_check`가 `complete.log`를 만든 뒤 시작한다. Client Dart parser map은 별도 `04+02_client_parser_map`에서 병렬 처리한다.
|
||||||
|
|
||||||
|
### 범위 결정 근거
|
||||||
|
|
||||||
|
이 subtask는 `services/api/**`와 API module dependency만 다룬다. Flutter client parser map, UI, actual request handlers, worker execution은 범위 밖이다.
|
||||||
|
|
||||||
|
### 빌드 등급
|
||||||
|
|
||||||
|
build=`cloud-G06`, review=`cloud-G06`. Protocol parser registration이 API runtime boundary에 들어가고 generated module dependency를 추가하므로 cloud review가 필요하다.
|
||||||
|
|
||||||
|
## 의존 관계 및 구현 순서
|
||||||
|
|
||||||
|
`03+02_api_parser_map`은 같은 task group의 `02+01_codegen_check`가 `complete.log`를 만든 뒤 시작한다. 이 의존성은 directory name의 `+02`가 source of truth다.
|
||||||
|
|
||||||
|
## 구현 체크리스트
|
||||||
|
|
||||||
|
- [ ] [API-1] API 내부 contract parser map helper와 unit test를 추가한다.
|
||||||
|
- [ ] [API-2] socket server construction이 API parser map을 사용하도록 연결하고 module dependency를 정리한다.
|
||||||
|
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.
|
||||||
|
|
||||||
|
### [API-1] API contract parser map helper
|
||||||
|
|
||||||
|
#### 문제
|
||||||
|
|
||||||
|
`../proto-socket/go/communicator.go:20`의 `ParserMap`은 `map[string]func([]byte) (proto.Message, error)`이고, parser가 없으면 `../proto-socket/go/communicator.go:304`에서 error를 반환한다. ALT API에는 generated `alt.v1` messages를 parser map으로 묶는 표준 위치가 없다.
|
||||||
|
|
||||||
|
Before:
|
||||||
|
|
||||||
|
```go
|
||||||
|
// ../proto-socket/go/communicator.go:304
|
||||||
|
func (c *Communicator) parse(typeName string, data []byte) (proto.Message, error) {
|
||||||
|
c.mu.RLock()
|
||||||
|
parser := c.parserMap[typeName]
|
||||||
|
c.mu.RUnlock()
|
||||||
|
if parser == nil {
|
||||||
|
return nil, fmt.Errorf("protobuf parser is not registered for type %s", typeName)
|
||||||
|
}
|
||||||
|
return parser(data)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
해결 후 형태:
|
||||||
|
|
||||||
|
```go
|
||||||
|
package contracts
|
||||||
|
|
||||||
|
func ParserMap() protoSocket.ParserMap {
|
||||||
|
return protoSocket.ParserMap{
|
||||||
|
protoSocket.TypeNameOf(&altv1.HelloRequest{}): parserFor(func() proto.Message { return &altv1.HelloRequest{} }),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 해결 방법
|
||||||
|
|
||||||
|
`services/api/internal/contracts/parser_map.go`를 만들고 generated `altv1` message 전체를 등록한다. request/response/result payload를 모두 포함하고 helper는 map을 새로 반환해 호출자가 mutate해도 package 전역 상태가 생기지 않게 한다.
|
||||||
|
|
||||||
|
#### 수정 파일 및 체크리스트
|
||||||
|
|
||||||
|
- [ ] `services/api/internal/contracts/parser_map.go`: `ParserMap()`과 shared `parserFor` helper 추가.
|
||||||
|
- [ ] `services/api/internal/contracts/parser_map_test.go`: map keys와 parse success 검증.
|
||||||
|
- [ ] `services/api/go.mod`: generated Go module require 추가.
|
||||||
|
|
||||||
|
#### 테스트 작성
|
||||||
|
|
||||||
|
작성한다. `TestParserMapIncludesAltMessages`는 `HelloRequest`, `HelloResponse`, `ListInstrumentsRequest`, `ListInstrumentsResponse`, `ListBarsRequest`, `ListBarsResponse`, `StartBacktestRequest`, `StartBacktestResponse`, `GetBacktestRunRequest`, `GetBacktestRunResponse`, `GetBacktestResultRequest`, `GetBacktestResultResponse`, `BacktestResult`를 등록/parse한다.
|
||||||
|
|
||||||
|
#### 중간 검증
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd services/api && go test ./internal/contracts
|
||||||
|
```
|
||||||
|
|
||||||
|
기대 결과: exit 0.
|
||||||
|
|
||||||
|
### [API-2] Wire parser map into socket server
|
||||||
|
|
||||||
|
#### 문제
|
||||||
|
|
||||||
|
`services/api/internal/socket/server.go:12`는 `protoSocket.ParserMap{}`를 전달해 ALT payload가 들어와도 parse할 수 없다.
|
||||||
|
|
||||||
|
Before:
|
||||||
|
|
||||||
|
```go
|
||||||
|
// services/api/internal/socket/server.go:10
|
||||||
|
func NewServer(cfg config.Config) *protoSocket.WsServer {
|
||||||
|
return protoSocket.NewWsServer(cfg.Host, cfg.Port, cfg.SocketPath, func(conn *websocket.Conn) *protoSocket.WsClient {
|
||||||
|
return protoSocket.NewWsClient(conn, cfg.HeartbeatIntervalSec, cfg.HeartbeatWaitSec, protoSocket.ParserMap{})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
해결 후 형태:
|
||||||
|
|
||||||
|
```go
|
||||||
|
import (
|
||||||
|
apiContracts "git.toki-labs.com/toki/alt/services/api/internal/contracts"
|
||||||
|
)
|
||||||
|
|
||||||
|
return protoSocket.NewWsClient(conn, cfg.HeartbeatIntervalSec, cfg.HeartbeatWaitSec, apiContracts.ParserMap())
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 해결 방법
|
||||||
|
|
||||||
|
`server.go`에서 API contracts helper를 import하고 `NewWsClient`에 `apiContracts.ParserMap()`을 전달한다. `go mod tidy`로 generated contract module dependency를 정리한다.
|
||||||
|
|
||||||
|
#### 수정 파일 및 체크리스트
|
||||||
|
|
||||||
|
- [ ] `services/api/internal/socket/server.go`: empty parser map을 API parser map으로 교체.
|
||||||
|
- [ ] `services/api/go.mod`: generated contract module dependency 유지.
|
||||||
|
- [ ] `services/api/go.sum`: 필요한 checksum 변경 반영.
|
||||||
|
|
||||||
|
#### 테스트 작성
|
||||||
|
|
||||||
|
별도 socket server unit test는 작성하지 않는다. 이 subtask는 parser map helper unit test와 `go test ./...` 컴파일 검증으로 충분하다. 실제 handshake/request-response behavior는 후속 `Socket Session Loop` Milestone 범위다.
|
||||||
|
|
||||||
|
#### 중간 검증
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd services/api && go test ./...
|
||||||
|
```
|
||||||
|
|
||||||
|
기대 결과: exit 0.
|
||||||
|
|
||||||
|
## 수정 파일 요약
|
||||||
|
|
||||||
|
| 파일 | 항목 |
|
||||||
|
|------|------|
|
||||||
|
| `services/api/internal/contracts/parser_map.go` | API-1 |
|
||||||
|
| `services/api/internal/contracts/parser_map_test.go` | API-1 |
|
||||||
|
| `services/api/internal/socket/server.go` | API-2 |
|
||||||
|
| `services/api/go.mod` | API-1, API-2 |
|
||||||
|
| `services/api/go.sum` | API-2 |
|
||||||
|
|
||||||
|
## 최종 검증
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd services/api && go test ./...
|
||||||
|
bin/test
|
||||||
|
bin/lint
|
||||||
|
```
|
||||||
|
|
||||||
|
기대 결과: 모든 명령 exit 0. Go test cache output은 허용한다.
|
||||||
|
|
||||||
|
모든 코드 변경 완료 후 반드시 `CODE_REVIEW-*-G??.md`의 구현 에이전트 소유 섹션을 채운다. 이 파일 작성이 구현의 마지막 단계다.
|
||||||
|
|
@ -0,0 +1,113 @@
|
||||||
|
<!-- task=m-contract-codegen-baseline/04+02_client_parser_map plan=0 tag=API -->
|
||||||
|
|
||||||
|
# Code Review Reference - API
|
||||||
|
|
||||||
|
> **[IMPLEMENTING AGENT — READ FIRST] Filling in this file is the mandatory final step of implementation.**
|
||||||
|
> The task is NOT complete until every implementation-owned section below is filled in.
|
||||||
|
> Complete the `구현 체크리스트`; the final checklist item is mandatory before saving.
|
||||||
|
> Fill implementation-owned sections, then stop with active files in place and report ready for review.
|
||||||
|
> Finalization (`코드리뷰 결과`, log rename, `complete.log`, archive moves, `코드리뷰 전용 체크리스트`) is review-agent-only, even after compaction/resume.
|
||||||
|
> Follow the ownership table at the bottom of this file for which sections you own.
|
||||||
|
|
||||||
|
## 개요
|
||||||
|
|
||||||
|
date=2026-05-28
|
||||||
|
task=m-contract-codegen-baseline/04+02_client_parser_map, plan=0, tag=API
|
||||||
|
|
||||||
|
## 이 파일을 읽는 리뷰 에이전트에게
|
||||||
|
|
||||||
|
> **[REVIEW AGENT ONLY]** 아래 종결 절차는 코드리뷰 에이전트 전용이다. 구현 에이전트는 이 섹션을 실행하지 않는다.
|
||||||
|
|
||||||
|
각 항목의 구현을 실제 소스 파일과 대조하고, `검증 결과` 섹션의 출력이 코드와 일치하는지 확인하세요.
|
||||||
|
리뷰 완료는 아래 순서까지 끝난 상태를 의미합니다.
|
||||||
|
|
||||||
|
1. 판정을 append한다.
|
||||||
|
2. `CODE_REVIEW-cloud-G06.md` → `code_review_cloud_G06_N.log`, `PLAN-cloud-G06.md` → `plan_cloud_G06_M.log`로 아카이브한다.
|
||||||
|
3. PASS이면 `complete.log` 작성 후 active task 디렉터리를 `agent-task/archive/YYYY/MM/m-contract-codegen-baseline/04+02_client_parser_map/`로 이동한다. WARN/FAIL이면 user-review gate를 확인한 뒤 다음 active plan/review 파일 또는 `USER_REVIEW.md`를 작성한다. `USER_REVIEW.md`가 사용자 결정으로 완료/PASS 해소되면 code-review가 `USER_REVIEW.md`를 해소 상태로 갱신하고 `complete.log` 작성 후 archive 이동한다.
|
||||||
|
4. PASS이고 task group이 `m-<milestone-slug>`이면 완료 이벤트 메타데이터를 보고한다. roadmap 상태 체크와 `update-roadmap` 호출은 런타임 책임이다.
|
||||||
|
5. 적용 가능한 `코드리뷰 전용 체크리스트` 항목을 최종 `.log` 위치에서 체크한 뒤 보고한다.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 구현 항목별 완료 여부
|
||||||
|
|
||||||
|
| 항목 | 완료 여부 |
|
||||||
|
|------|---------|
|
||||||
|
| [API-1] Flutter parser map helper | [ ] |
|
||||||
|
| [API-2] Client contract location documentation | [ ] |
|
||||||
|
|
||||||
|
## 구현 체크리스트
|
||||||
|
|
||||||
|
- [ ] [API-1] Flutter client contract parser map helper와 unit test를 추가한다.
|
||||||
|
- [ ] [API-2] client README에 generated contract와 parser map 표준 위치를 문서화한다.
|
||||||
|
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.
|
||||||
|
|
||||||
|
## 코드리뷰 전용 체크리스트
|
||||||
|
|
||||||
|
> **[REVIEW AGENT ONLY]** 이 체크리스트는 코드리뷰 에이전트만 사용한다.
|
||||||
|
> 구현 에이전트는 이 섹션을 수정하거나 체크하지 않는다.
|
||||||
|
|
||||||
|
- [ ] `코드리뷰 결과`에 `PASS`, `WARN`, `FAIL` 중 하나의 판정을 append한다.
|
||||||
|
- [ ] 판정과 `차원별 평가`, Required/Suggested/Nit 분류가 서로 일치한다.
|
||||||
|
- [ ] active `CODE_REVIEW-*-G??.md`를 `code_review_cloud_G06_N.log`로 아카이브한다.
|
||||||
|
- [ ] active `PLAN-*-G??.md`를 `plan_cloud_G06_M.log`로 아카이브한다.
|
||||||
|
- [ ] PASS이면 `agent-ops/skills/common/code-review/templates/complete-log-template.md` 기준으로 `complete.log`를 작성하고 active `.md` 파일을 남기지 않는다.
|
||||||
|
- [ ] PASS이면 active task 디렉터리 `agent-task/m-contract-codegen-baseline/04+02_client_parser_map/`를 `agent-task/archive/YYYY/MM/m-contract-codegen-baseline/04+02_client_parser_map/`로 이동하고 최종 archive 경로에서 이 체크리스트를 갱신한다.
|
||||||
|
- [ ] PASS이고 task group이 `m-<milestone-slug>`이면 런타임이 읽을 완료 이벤트 메타데이터를 보고하고, roadmap 수정이나 `update-roadmap` 직접 호출을 하지 않는다.
|
||||||
|
- [ ] PASS split 작업이면 이동 후 빈 active parent `agent-task/m-contract-codegen-baseline/`를 제거하거나, 남은 sibling/file이 있어 유지했다고 확인한다.
|
||||||
|
- [ ] WARN/FAIL이고 user-review gate가 트리거되지 않았으면 다음 active `PLAN-cloud-G06.md`와 `CODE_REVIEW-cloud-G06.md`를 작성하고 `complete.log`를 작성하지 않는다.
|
||||||
|
- [ ] USER_REVIEW이면 `agent-ops/skills/common/code-review/templates/user-review-template.md` 기준으로 `USER_REVIEW.md`를 작성하고 active `PLAN-*.md`, `CODE_REVIEW-*.md`, `complete.log`를 남기지 않는다.
|
||||||
|
- [ ] USER_REVIEW가 사용자 결정으로 완료/PASS 해소되면 `USER_REVIEW.md`를 해소 상태로 갱신하고 `complete.log`를 작성한 뒤 task directory를 archive로 이동한다.
|
||||||
|
|
||||||
|
## 계획 대비 변경 사항
|
||||||
|
|
||||||
|
_구현 에이전트가 계획과 다르게 구현한 부분을 이유와 함께 기록한다._
|
||||||
|
|
||||||
|
## 주요 설계 결정
|
||||||
|
|
||||||
|
_구현 에이전트가 주요 설계 결정 사항을 기록한다._
|
||||||
|
|
||||||
|
## 리뷰어를 위한 체크포인트
|
||||||
|
|
||||||
|
- Client parser map이 generated message qualified names를 key로 쓰는지 확인한다.
|
||||||
|
- Helper가 presentation/UI layer에 의존하지 않는지 확인한다.
|
||||||
|
- Test가 generated Dart files를 실제 import/parse하는지 확인한다.
|
||||||
|
|
||||||
|
## 검증 결과
|
||||||
|
|
||||||
|
_구현 에이전트가 각 중간 검증 및 최종 검증 명령 실행 후 출력을 여기에 붙여 넣는다._
|
||||||
|
|
||||||
|
필수 규칙:
|
||||||
|
- 검증 명령은 고정된 계약이다. 임의로 대체하지 않는다.
|
||||||
|
- 대체가 필요하면 `계획 대비 변경 사항`에 이유와 대체 명령을 기록한다.
|
||||||
|
- `검증 결과`에는 실제 stdout/stderr를 붙여 넣는다.
|
||||||
|
|
||||||
|
### API-1 중간 검증
|
||||||
|
```bash
|
||||||
|
$ cd apps/client && flutter test test/contracts/alt_contracts_test.dart
|
||||||
|
(output)
|
||||||
|
```
|
||||||
|
|
||||||
|
### API-2 중간 검증
|
||||||
|
```bash
|
||||||
|
$ rg --sort path -n "lib/src/generated/alt/v1|lib/src/contracts|contracts-gen" apps/client/README.md
|
||||||
|
(output)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 최종 검증
|
||||||
|
```bash
|
||||||
|
$ cd apps/client && flutter test test/contracts/alt_contracts_test.dart
|
||||||
|
(output)
|
||||||
|
$ rg --sort path -n "lib/src/generated/alt/v1|lib/src/contracts|contracts-gen" apps/client/README.md
|
||||||
|
(output)
|
||||||
|
$ bin/test
|
||||||
|
(output)
|
||||||
|
$ bin/lint
|
||||||
|
(output)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
> **[IMPLEMENTING AGENT — BEFORE SAVING] Have you filled in every implementation-owned section: completion table, implementation checklist, changes from plan, design decisions, and verification output?**
|
||||||
|
> If anything is blank, go back and fill it in before saving this file.
|
||||||
|
> Leave review-agent-only sections unchanged.
|
||||||
|
|
@ -0,0 +1,184 @@
|
||||||
|
<!-- task=m-contract-codegen-baseline/04+02_client_parser_map plan=0 tag=API -->
|
||||||
|
|
||||||
|
# Plan - Client Parser Map
|
||||||
|
|
||||||
|
## 이 파일을 읽는 구현 에이전트에게
|
||||||
|
|
||||||
|
`CODE_REVIEW-*-G??.md`의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 반드시 채운다. 검증 명령을 실행하고 실제 stdout/stderr를 기록한 뒤 active 파일을 그대로 두고 리뷰 준비를 보고한다. 최종화는 code-review 스킬 전용이다.
|
||||||
|
|
||||||
|
## 배경
|
||||||
|
|
||||||
|
Flutter client는 generated ALT contracts를 소비해야 하지만 현재 parser map 표준 위치가 없다. `02+01_codegen_check`가 Dart generated output을 만든 뒤, `lib/src/contracts`에 작은 helper를 두면 후속 socket client adoption이 UI와 generated code를 직접 엮지 않아도 된다.
|
||||||
|
|
||||||
|
## 분석 결과
|
||||||
|
|
||||||
|
### 읽은 파일
|
||||||
|
|
||||||
|
- `agent-roadmap/current.md`
|
||||||
|
- `agent-roadmap/phase/foundation-alignment/PHASE.md`
|
||||||
|
- `agent-roadmap/phase/foundation-alignment/milestones/contract-codegen-baseline.md`
|
||||||
|
- `agent-ops/rules/project/domain/client/rules.md`
|
||||||
|
- `agent-ops/rules/project/domain/contracts/rules.md`
|
||||||
|
- `apps/client/pubspec.yaml`
|
||||||
|
- `apps/client/README.md`
|
||||||
|
- `apps/client/lib/main.dart`
|
||||||
|
- `apps/client/lib/src/app/app.dart`
|
||||||
|
- `apps/client/lib/src/app/router.dart`
|
||||||
|
- `apps/client/lib/src/features/dashboard/presentation/dashboard_screen.dart`
|
||||||
|
- `apps/client/test/widget_test.dart`
|
||||||
|
- `packages/contracts/proto/alt/v1/common.proto`
|
||||||
|
- `packages/contracts/proto/alt/v1/market.proto`
|
||||||
|
- `packages/contracts/proto/alt/v1/backtest.proto`
|
||||||
|
- `../proto-socket/dart/lib/src/communicator.dart`
|
||||||
|
- `bin/test`
|
||||||
|
- `bin/lint`
|
||||||
|
|
||||||
|
### 테스트 커버리지 공백
|
||||||
|
|
||||||
|
- Client parser map helper: 기존 테스트 없음. 새 Dart unit test가 qualified message name keys와 fromBuffer parse success를 검증해야 한다.
|
||||||
|
- Generated Dart import stability: 기존 widget test는 generated contracts를 import하지 않는다. 새 parser map test가 generated files를 컴파일 경로에 포함한다.
|
||||||
|
|
||||||
|
### 심볼 참조
|
||||||
|
|
||||||
|
- renamed/removed symbols: none.
|
||||||
|
|
||||||
|
### 분할 판단
|
||||||
|
|
||||||
|
분할 정책을 먼저 평가했다. 이 plan은 `04+02_client_parser_map`이며 `02+01_codegen_check`가 `complete.log`를 만든 뒤 시작한다. API parser map은 별도 `03+02_api_parser_map`으로 분리되어 있고, 두 subtask는 codegen 이후 병렬 가능하다.
|
||||||
|
|
||||||
|
### 범위 결정 근거
|
||||||
|
|
||||||
|
이 subtask는 `apps/client/lib/src/contracts`, generated Dart imports, client tests, client README만 다룬다. Socket connection lifecycle, WebSocket configuration, UI state, Go API 변경은 범위 밖이다.
|
||||||
|
|
||||||
|
### 빌드 등급
|
||||||
|
|
||||||
|
build=`cloud-G06`, review=`cloud-G06`. Generated Dart contracts와 proto-socket wire type conventions를 client boundary에 묶는 protocol/client 작업이다.
|
||||||
|
|
||||||
|
## 의존 관계 및 구현 순서
|
||||||
|
|
||||||
|
`04+02_client_parser_map`은 같은 task group의 `02+01_codegen_check`가 `complete.log`를 만든 뒤 시작한다. 이 의존성은 directory name의 `+02`가 source of truth다.
|
||||||
|
|
||||||
|
## 구현 체크리스트
|
||||||
|
|
||||||
|
- [ ] [API-1] Flutter client contract parser map helper와 unit test를 추가한다.
|
||||||
|
- [ ] [API-2] client README에 generated contract와 parser map 표준 위치를 문서화한다.
|
||||||
|
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.
|
||||||
|
|
||||||
|
### [API-1] Flutter parser map helper
|
||||||
|
|
||||||
|
#### 문제
|
||||||
|
|
||||||
|
`apps/client/README.md:5`는 ALT protobuf bindings를 `lib/src` 아래에 추가하라고만 안내한다. `../proto-socket/dart/lib/src/communicator.dart:45`는 `Map<String, GeneratedMessage Function(List<int>)>` parser map을 요구하고, `../proto-socket/dart/lib/src/communicator.dart:98`은 outgoing `typeName`에 `data.info_.qualifiedMessageName`을 쓴다. Client에는 generated ALT messages의 qualified names를 모으는 helper가 없다.
|
||||||
|
|
||||||
|
Before:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
<!-- apps/client/README.md:5 -->
|
||||||
|
This app uses Riverpod for state and dependency boundaries, and `go_router` for navigation. ALT protobuf bindings and the proto-socket client layer should be added under `lib/src` after `packages/contracts` generation is introduced.
|
||||||
|
```
|
||||||
|
|
||||||
|
```dart
|
||||||
|
// ../proto-socket/dart/lib/src/communicator.dart:45
|
||||||
|
void initialize(
|
||||||
|
Map<String, GeneratedMessage Function(List<int>)> instanceGenerator,
|
||||||
|
{required Transport transport}) {
|
||||||
|
_instanceGenerator = instanceGenerator;
|
||||||
|
_transport = transport;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
해결 후 형태:
|
||||||
|
|
||||||
|
```dart
|
||||||
|
import 'package:protobuf/protobuf.dart';
|
||||||
|
|
||||||
|
Map<String, GeneratedMessage Function(List<int>)> altParserMap() {
|
||||||
|
return {
|
||||||
|
HelloRequest.getDefault().info_.qualifiedMessageName: HelloRequest.fromBuffer,
|
||||||
|
HelloResponse.getDefault().info_.qualifiedMessageName: HelloResponse.fromBuffer,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 해결 방법
|
||||||
|
|
||||||
|
`apps/client/lib/src/contracts/alt_contracts.dart`를 만들고 generated `common.pb.dart`, `market.pb.dart`, `backtest.pb.dart`의 request/response/result message를 등록한다. helper는 새 map을 반환하고, UI/presentation layer에는 import하지 않는다.
|
||||||
|
|
||||||
|
#### 수정 파일 및 체크리스트
|
||||||
|
|
||||||
|
- [ ] `apps/client/lib/src/contracts/alt_contracts.dart`: `altParserMap()` 추가.
|
||||||
|
- [ ] `apps/client/test/contracts/alt_contracts_test.dart`: qualified key와 parse success 검증.
|
||||||
|
|
||||||
|
#### 테스트 작성
|
||||||
|
|
||||||
|
작성한다. `altParserMap contains generated ALT message parsers`는 `HelloRequest`, `HelloResponse`, `ListInstrumentsRequest`, `ListInstrumentsResponse`, `ListBarsRequest`, `ListBarsResponse`, `StartBacktestRequest`, `StartBacktestResponse`, `GetBacktestRunRequest`, `GetBacktestRunResponse`, `GetBacktestResultRequest`, `GetBacktestResultResponse`, `BacktestResult`를 map에서 찾아 `fromBuffer` round-trip으로 검증한다.
|
||||||
|
|
||||||
|
#### 중간 검증
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd apps/client && flutter test test/contracts/alt_contracts_test.dart
|
||||||
|
```
|
||||||
|
|
||||||
|
기대 결과: exit 0.
|
||||||
|
|
||||||
|
### [API-2] Client contract location documentation
|
||||||
|
|
||||||
|
#### 문제
|
||||||
|
|
||||||
|
`apps/client/README.md:5`의 문장은 codegen 도입 전 placeholder라서 generated output path와 parser map helper 위치를 알려주지 않는다.
|
||||||
|
|
||||||
|
Before:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
<!-- apps/client/README.md:5 -->
|
||||||
|
ALT protobuf bindings and the proto-socket client layer should be added under `lib/src` after `packages/contracts` generation is introduced.
|
||||||
|
```
|
||||||
|
|
||||||
|
해결 후 형태:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
Generated ALT protobuf files live under `lib/src/generated/alt/v1`.
|
||||||
|
Client parser map helpers live under `lib/src/contracts`.
|
||||||
|
Do not edit generated files by hand; run `../../bin/contracts-gen`.
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 해결 방법
|
||||||
|
|
||||||
|
README에 generated output path, parser map helper path, regeneration command만 짧게 남긴다.
|
||||||
|
|
||||||
|
#### 수정 파일 및 체크리스트
|
||||||
|
|
||||||
|
- [ ] `apps/client/README.md`: generated contract and parser map section 추가.
|
||||||
|
|
||||||
|
#### 테스트 작성
|
||||||
|
|
||||||
|
문서 변경이므로 테스트 파일은 작성하지 않는다. deterministic search로 앵커 존재를 확인한다.
|
||||||
|
|
||||||
|
#### 중간 검증
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rg --sort path -n "lib/src/generated/alt/v1|lib/src/contracts|contracts-gen" apps/client/README.md
|
||||||
|
```
|
||||||
|
|
||||||
|
기대 결과: 모든 앵커가 검색된다.
|
||||||
|
|
||||||
|
## 수정 파일 요약
|
||||||
|
|
||||||
|
| 파일 | 항목 |
|
||||||
|
|------|------|
|
||||||
|
| `apps/client/lib/src/contracts/alt_contracts.dart` | API-1 |
|
||||||
|
| `apps/client/test/contracts/alt_contracts_test.dart` | API-1 |
|
||||||
|
| `apps/client/README.md` | API-2 |
|
||||||
|
|
||||||
|
## 최종 검증
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd apps/client && flutter test test/contracts/alt_contracts_test.dart
|
||||||
|
rg --sort path -n "lib/src/generated/alt/v1|lib/src/contracts|contracts-gen" apps/client/README.md
|
||||||
|
bin/test
|
||||||
|
bin/lint
|
||||||
|
```
|
||||||
|
|
||||||
|
기대 결과: 모든 명령 exit 0. Flutter test cache output은 해당 없음.
|
||||||
|
|
||||||
|
모든 코드 변경 완료 후 반드시 `CODE_REVIEW-*-G??.md`의 구현 에이전트 소유 섹션을 채운다. 이 파일 작성이 구현의 마지막 단계다.
|
||||||
664
apps/client/lib/src/generated/alt/v1/backtest.pb.dart
Normal file
664
apps/client/lib/src/generated/alt/v1/backtest.pb.dart
Normal file
|
|
@ -0,0 +1,664 @@
|
||||||
|
// This is a generated file - do not edit.
|
||||||
|
//
|
||||||
|
// Generated from alt/v1/backtest.proto.
|
||||||
|
|
||||||
|
// @dart = 3.3
|
||||||
|
|
||||||
|
// ignore_for_file: annotate_overrides, camel_case_types, comment_references
|
||||||
|
// ignore_for_file: constant_identifier_names
|
||||||
|
// ignore_for_file: curly_braces_in_flow_control_structures
|
||||||
|
// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes
|
||||||
|
// ignore_for_file: non_constant_identifier_names, prefer_relative_imports
|
||||||
|
|
||||||
|
import 'dart:core' as $core;
|
||||||
|
|
||||||
|
import 'package:fixnum/fixnum.dart' as $fixnum;
|
||||||
|
import 'package:protobuf/protobuf.dart' as $pb;
|
||||||
|
|
||||||
|
import 'backtest.pbenum.dart';
|
||||||
|
import 'common.pbenum.dart' as $1;
|
||||||
|
import 'market.pb.dart' as $0;
|
||||||
|
|
||||||
|
export 'package:protobuf/protobuf.dart' show GeneratedMessageGenericExtensions;
|
||||||
|
|
||||||
|
export 'backtest.pbenum.dart';
|
||||||
|
|
||||||
|
class BacktestRunSpec extends $pb.GeneratedMessage {
|
||||||
|
factory BacktestRunSpec({
|
||||||
|
$core.String? strategyId,
|
||||||
|
$1.Market? market,
|
||||||
|
$1.Timeframe? timeframe,
|
||||||
|
$fixnum.Int64? fromUnixMs,
|
||||||
|
$fixnum.Int64? toUnixMs,
|
||||||
|
}) {
|
||||||
|
final result = create();
|
||||||
|
if (strategyId != null) result.strategyId = strategyId;
|
||||||
|
if (market != null) result.market = market;
|
||||||
|
if (timeframe != null) result.timeframe = timeframe;
|
||||||
|
if (fromUnixMs != null) result.fromUnixMs = fromUnixMs;
|
||||||
|
if (toUnixMs != null) result.toUnixMs = toUnixMs;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
BacktestRunSpec._();
|
||||||
|
|
||||||
|
factory BacktestRunSpec.fromBuffer($core.List<$core.int> data,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromBuffer(data, registry);
|
||||||
|
factory BacktestRunSpec.fromJson($core.String json,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromJson(json, registry);
|
||||||
|
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
|
||||||
|
_omitMessageNames ? '' : 'BacktestRunSpec',
|
||||||
|
package: const $pb.PackageName(_omitMessageNames ? '' : 'alt.v1'),
|
||||||
|
createEmptyInstance: create)
|
||||||
|
..aOS(1, _omitFieldNames ? '' : 'strategyId')
|
||||||
|
..aE<$1.Market>(2, _omitFieldNames ? '' : 'market',
|
||||||
|
enumValues: $1.Market.values)
|
||||||
|
..aE<$1.Timeframe>(3, _omitFieldNames ? '' : 'timeframe',
|
||||||
|
enumValues: $1.Timeframe.values)
|
||||||
|
..aInt64(4, _omitFieldNames ? '' : 'fromUnixMs')
|
||||||
|
..aInt64(5, _omitFieldNames ? '' : 'toUnixMs')
|
||||||
|
..hasRequiredFields = false;
|
||||||
|
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
BacktestRunSpec clone() => deepCopy();
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
BacktestRunSpec copyWith(void Function(BacktestRunSpec) updates) =>
|
||||||
|
super.copyWith((message) => updates(message as BacktestRunSpec))
|
||||||
|
as BacktestRunSpec;
|
||||||
|
|
||||||
|
@$core.override
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static BacktestRunSpec create() => BacktestRunSpec._();
|
||||||
|
@$core.override
|
||||||
|
BacktestRunSpec createEmptyInstance() => create();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static BacktestRunSpec getDefault() => _defaultInstance ??=
|
||||||
|
$pb.GeneratedMessage.$_defaultFor<BacktestRunSpec>(create);
|
||||||
|
static BacktestRunSpec? _defaultInstance;
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.String get strategyId => $_getSZ(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set strategyId($core.String value) => $_setString(0, value);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasStrategyId() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearStrategyId() => $_clearField(1);
|
||||||
|
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$1.Market get market => $_getN(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
set market($1.Market value) => $_setField(2, value);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$core.bool hasMarket() => $_has(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
void clearMarket() => $_clearField(2);
|
||||||
|
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
$1.Timeframe get timeframe => $_getN(2);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
set timeframe($1.Timeframe value) => $_setField(3, value);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
$core.bool hasTimeframe() => $_has(2);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
void clearTimeframe() => $_clearField(3);
|
||||||
|
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
$fixnum.Int64 get fromUnixMs => $_getI64(3);
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
set fromUnixMs($fixnum.Int64 value) => $_setInt64(3, value);
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
$core.bool hasFromUnixMs() => $_has(3);
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
void clearFromUnixMs() => $_clearField(4);
|
||||||
|
|
||||||
|
@$pb.TagNumber(5)
|
||||||
|
$fixnum.Int64 get toUnixMs => $_getI64(4);
|
||||||
|
@$pb.TagNumber(5)
|
||||||
|
set toUnixMs($fixnum.Int64 value) => $_setInt64(4, value);
|
||||||
|
@$pb.TagNumber(5)
|
||||||
|
$core.bool hasToUnixMs() => $_has(4);
|
||||||
|
@$pb.TagNumber(5)
|
||||||
|
void clearToUnixMs() => $_clearField(5);
|
||||||
|
}
|
||||||
|
|
||||||
|
class BacktestRun extends $pb.GeneratedMessage {
|
||||||
|
factory BacktestRun({
|
||||||
|
$core.String? id,
|
||||||
|
BacktestRunSpec? spec,
|
||||||
|
BacktestRunStatus? status,
|
||||||
|
$fixnum.Int64? createdAtUnixMs,
|
||||||
|
$fixnum.Int64? updatedAtUnixMs,
|
||||||
|
}) {
|
||||||
|
final result = create();
|
||||||
|
if (id != null) result.id = id;
|
||||||
|
if (spec != null) result.spec = spec;
|
||||||
|
if (status != null) result.status = status;
|
||||||
|
if (createdAtUnixMs != null) result.createdAtUnixMs = createdAtUnixMs;
|
||||||
|
if (updatedAtUnixMs != null) result.updatedAtUnixMs = updatedAtUnixMs;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
BacktestRun._();
|
||||||
|
|
||||||
|
factory BacktestRun.fromBuffer($core.List<$core.int> data,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromBuffer(data, registry);
|
||||||
|
factory BacktestRun.fromJson($core.String json,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromJson(json, registry);
|
||||||
|
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
|
||||||
|
_omitMessageNames ? '' : 'BacktestRun',
|
||||||
|
package: const $pb.PackageName(_omitMessageNames ? '' : 'alt.v1'),
|
||||||
|
createEmptyInstance: create)
|
||||||
|
..aOS(1, _omitFieldNames ? '' : 'id')
|
||||||
|
..aOM<BacktestRunSpec>(2, _omitFieldNames ? '' : 'spec',
|
||||||
|
subBuilder: BacktestRunSpec.create)
|
||||||
|
..aE<BacktestRunStatus>(3, _omitFieldNames ? '' : 'status',
|
||||||
|
enumValues: BacktestRunStatus.values)
|
||||||
|
..aInt64(4, _omitFieldNames ? '' : 'createdAtUnixMs')
|
||||||
|
..aInt64(5, _omitFieldNames ? '' : 'updatedAtUnixMs')
|
||||||
|
..hasRequiredFields = false;
|
||||||
|
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
BacktestRun clone() => deepCopy();
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
BacktestRun copyWith(void Function(BacktestRun) updates) =>
|
||||||
|
super.copyWith((message) => updates(message as BacktestRun))
|
||||||
|
as BacktestRun;
|
||||||
|
|
||||||
|
@$core.override
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static BacktestRun create() => BacktestRun._();
|
||||||
|
@$core.override
|
||||||
|
BacktestRun createEmptyInstance() => create();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static BacktestRun getDefault() => _defaultInstance ??=
|
||||||
|
$pb.GeneratedMessage.$_defaultFor<BacktestRun>(create);
|
||||||
|
static BacktestRun? _defaultInstance;
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.String get id => $_getSZ(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set id($core.String value) => $_setString(0, value);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasId() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearId() => $_clearField(1);
|
||||||
|
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
BacktestRunSpec get spec => $_getN(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
set spec(BacktestRunSpec value) => $_setField(2, value);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$core.bool hasSpec() => $_has(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
void clearSpec() => $_clearField(2);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
BacktestRunSpec ensureSpec() => $_ensure(1);
|
||||||
|
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
BacktestRunStatus get status => $_getN(2);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
set status(BacktestRunStatus value) => $_setField(3, value);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
$core.bool hasStatus() => $_has(2);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
void clearStatus() => $_clearField(3);
|
||||||
|
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
$fixnum.Int64 get createdAtUnixMs => $_getI64(3);
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
set createdAtUnixMs($fixnum.Int64 value) => $_setInt64(3, value);
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
$core.bool hasCreatedAtUnixMs() => $_has(3);
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
void clearCreatedAtUnixMs() => $_clearField(4);
|
||||||
|
|
||||||
|
@$pb.TagNumber(5)
|
||||||
|
$fixnum.Int64 get updatedAtUnixMs => $_getI64(4);
|
||||||
|
@$pb.TagNumber(5)
|
||||||
|
set updatedAtUnixMs($fixnum.Int64 value) => $_setInt64(4, value);
|
||||||
|
@$pb.TagNumber(5)
|
||||||
|
$core.bool hasUpdatedAtUnixMs() => $_has(4);
|
||||||
|
@$pb.TagNumber(5)
|
||||||
|
void clearUpdatedAtUnixMs() => $_clearField(5);
|
||||||
|
}
|
||||||
|
|
||||||
|
class StartBacktestRequest extends $pb.GeneratedMessage {
|
||||||
|
factory StartBacktestRequest({
|
||||||
|
BacktestRunSpec? spec,
|
||||||
|
}) {
|
||||||
|
final result = create();
|
||||||
|
if (spec != null) result.spec = spec;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
StartBacktestRequest._();
|
||||||
|
|
||||||
|
factory StartBacktestRequest.fromBuffer($core.List<$core.int> data,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromBuffer(data, registry);
|
||||||
|
factory StartBacktestRequest.fromJson($core.String json,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromJson(json, registry);
|
||||||
|
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
|
||||||
|
_omitMessageNames ? '' : 'StartBacktestRequest',
|
||||||
|
package: const $pb.PackageName(_omitMessageNames ? '' : 'alt.v1'),
|
||||||
|
createEmptyInstance: create)
|
||||||
|
..aOM<BacktestRunSpec>(1, _omitFieldNames ? '' : 'spec',
|
||||||
|
subBuilder: BacktestRunSpec.create)
|
||||||
|
..hasRequiredFields = false;
|
||||||
|
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
StartBacktestRequest clone() => deepCopy();
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
StartBacktestRequest copyWith(void Function(StartBacktestRequest) updates) =>
|
||||||
|
super.copyWith((message) => updates(message as StartBacktestRequest))
|
||||||
|
as StartBacktestRequest;
|
||||||
|
|
||||||
|
@$core.override
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static StartBacktestRequest create() => StartBacktestRequest._();
|
||||||
|
@$core.override
|
||||||
|
StartBacktestRequest createEmptyInstance() => create();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static StartBacktestRequest getDefault() => _defaultInstance ??=
|
||||||
|
$pb.GeneratedMessage.$_defaultFor<StartBacktestRequest>(create);
|
||||||
|
static StartBacktestRequest? _defaultInstance;
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
BacktestRunSpec get spec => $_getN(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set spec(BacktestRunSpec value) => $_setField(1, value);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasSpec() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearSpec() => $_clearField(1);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
BacktestRunSpec ensureSpec() => $_ensure(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
class StartBacktestResponse extends $pb.GeneratedMessage {
|
||||||
|
factory StartBacktestResponse({
|
||||||
|
BacktestRun? run,
|
||||||
|
}) {
|
||||||
|
final result = create();
|
||||||
|
if (run != null) result.run = run;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
StartBacktestResponse._();
|
||||||
|
|
||||||
|
factory StartBacktestResponse.fromBuffer($core.List<$core.int> data,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromBuffer(data, registry);
|
||||||
|
factory StartBacktestResponse.fromJson($core.String json,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromJson(json, registry);
|
||||||
|
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
|
||||||
|
_omitMessageNames ? '' : 'StartBacktestResponse',
|
||||||
|
package: const $pb.PackageName(_omitMessageNames ? '' : 'alt.v1'),
|
||||||
|
createEmptyInstance: create)
|
||||||
|
..aOM<BacktestRun>(1, _omitFieldNames ? '' : 'run',
|
||||||
|
subBuilder: BacktestRun.create)
|
||||||
|
..hasRequiredFields = false;
|
||||||
|
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
StartBacktestResponse clone() => deepCopy();
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
StartBacktestResponse copyWith(
|
||||||
|
void Function(StartBacktestResponse) updates) =>
|
||||||
|
super.copyWith((message) => updates(message as StartBacktestResponse))
|
||||||
|
as StartBacktestResponse;
|
||||||
|
|
||||||
|
@$core.override
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static StartBacktestResponse create() => StartBacktestResponse._();
|
||||||
|
@$core.override
|
||||||
|
StartBacktestResponse createEmptyInstance() => create();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static StartBacktestResponse getDefault() => _defaultInstance ??=
|
||||||
|
$pb.GeneratedMessage.$_defaultFor<StartBacktestResponse>(create);
|
||||||
|
static StartBacktestResponse? _defaultInstance;
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
BacktestRun get run => $_getN(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set run(BacktestRun value) => $_setField(1, value);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasRun() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearRun() => $_clearField(1);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
BacktestRun ensureRun() => $_ensure(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
class GetBacktestRunRequest extends $pb.GeneratedMessage {
|
||||||
|
factory GetBacktestRunRequest({
|
||||||
|
$core.String? runId,
|
||||||
|
}) {
|
||||||
|
final result = create();
|
||||||
|
if (runId != null) result.runId = runId;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
GetBacktestRunRequest._();
|
||||||
|
|
||||||
|
factory GetBacktestRunRequest.fromBuffer($core.List<$core.int> data,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromBuffer(data, registry);
|
||||||
|
factory GetBacktestRunRequest.fromJson($core.String json,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromJson(json, registry);
|
||||||
|
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
|
||||||
|
_omitMessageNames ? '' : 'GetBacktestRunRequest',
|
||||||
|
package: const $pb.PackageName(_omitMessageNames ? '' : 'alt.v1'),
|
||||||
|
createEmptyInstance: create)
|
||||||
|
..aOS(1, _omitFieldNames ? '' : 'runId')
|
||||||
|
..hasRequiredFields = false;
|
||||||
|
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
GetBacktestRunRequest clone() => deepCopy();
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
GetBacktestRunRequest copyWith(
|
||||||
|
void Function(GetBacktestRunRequest) updates) =>
|
||||||
|
super.copyWith((message) => updates(message as GetBacktestRunRequest))
|
||||||
|
as GetBacktestRunRequest;
|
||||||
|
|
||||||
|
@$core.override
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static GetBacktestRunRequest create() => GetBacktestRunRequest._();
|
||||||
|
@$core.override
|
||||||
|
GetBacktestRunRequest createEmptyInstance() => create();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static GetBacktestRunRequest getDefault() => _defaultInstance ??=
|
||||||
|
$pb.GeneratedMessage.$_defaultFor<GetBacktestRunRequest>(create);
|
||||||
|
static GetBacktestRunRequest? _defaultInstance;
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.String get runId => $_getSZ(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set runId($core.String value) => $_setString(0, value);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasRunId() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearRunId() => $_clearField(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
class GetBacktestRunResponse extends $pb.GeneratedMessage {
|
||||||
|
factory GetBacktestRunResponse({
|
||||||
|
BacktestRun? run,
|
||||||
|
}) {
|
||||||
|
final result = create();
|
||||||
|
if (run != null) result.run = run;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
GetBacktestRunResponse._();
|
||||||
|
|
||||||
|
factory GetBacktestRunResponse.fromBuffer($core.List<$core.int> data,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromBuffer(data, registry);
|
||||||
|
factory GetBacktestRunResponse.fromJson($core.String json,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromJson(json, registry);
|
||||||
|
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
|
||||||
|
_omitMessageNames ? '' : 'GetBacktestRunResponse',
|
||||||
|
package: const $pb.PackageName(_omitMessageNames ? '' : 'alt.v1'),
|
||||||
|
createEmptyInstance: create)
|
||||||
|
..aOM<BacktestRun>(1, _omitFieldNames ? '' : 'run',
|
||||||
|
subBuilder: BacktestRun.create)
|
||||||
|
..hasRequiredFields = false;
|
||||||
|
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
GetBacktestRunResponse clone() => deepCopy();
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
GetBacktestRunResponse copyWith(
|
||||||
|
void Function(GetBacktestRunResponse) updates) =>
|
||||||
|
super.copyWith((message) => updates(message as GetBacktestRunResponse))
|
||||||
|
as GetBacktestRunResponse;
|
||||||
|
|
||||||
|
@$core.override
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static GetBacktestRunResponse create() => GetBacktestRunResponse._();
|
||||||
|
@$core.override
|
||||||
|
GetBacktestRunResponse createEmptyInstance() => create();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static GetBacktestRunResponse getDefault() => _defaultInstance ??=
|
||||||
|
$pb.GeneratedMessage.$_defaultFor<GetBacktestRunResponse>(create);
|
||||||
|
static GetBacktestRunResponse? _defaultInstance;
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
BacktestRun get run => $_getN(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set run(BacktestRun value) => $_setField(1, value);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasRun() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearRun() => $_clearField(1);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
BacktestRun ensureRun() => $_ensure(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
class BacktestResult extends $pb.GeneratedMessage {
|
||||||
|
factory BacktestResult({
|
||||||
|
$core.String? runId,
|
||||||
|
$0.Price? startingCash,
|
||||||
|
$0.Price? endingEquity,
|
||||||
|
}) {
|
||||||
|
final result = create();
|
||||||
|
if (runId != null) result.runId = runId;
|
||||||
|
if (startingCash != null) result.startingCash = startingCash;
|
||||||
|
if (endingEquity != null) result.endingEquity = endingEquity;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
BacktestResult._();
|
||||||
|
|
||||||
|
factory BacktestResult.fromBuffer($core.List<$core.int> data,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromBuffer(data, registry);
|
||||||
|
factory BacktestResult.fromJson($core.String json,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromJson(json, registry);
|
||||||
|
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
|
||||||
|
_omitMessageNames ? '' : 'BacktestResult',
|
||||||
|
package: const $pb.PackageName(_omitMessageNames ? '' : 'alt.v1'),
|
||||||
|
createEmptyInstance: create)
|
||||||
|
..aOS(1, _omitFieldNames ? '' : 'runId')
|
||||||
|
..aOM<$0.Price>(2, _omitFieldNames ? '' : 'startingCash',
|
||||||
|
subBuilder: $0.Price.create)
|
||||||
|
..aOM<$0.Price>(3, _omitFieldNames ? '' : 'endingEquity',
|
||||||
|
subBuilder: $0.Price.create)
|
||||||
|
..hasRequiredFields = false;
|
||||||
|
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
BacktestResult clone() => deepCopy();
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
BacktestResult copyWith(void Function(BacktestResult) updates) =>
|
||||||
|
super.copyWith((message) => updates(message as BacktestResult))
|
||||||
|
as BacktestResult;
|
||||||
|
|
||||||
|
@$core.override
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static BacktestResult create() => BacktestResult._();
|
||||||
|
@$core.override
|
||||||
|
BacktestResult createEmptyInstance() => create();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static BacktestResult getDefault() => _defaultInstance ??=
|
||||||
|
$pb.GeneratedMessage.$_defaultFor<BacktestResult>(create);
|
||||||
|
static BacktestResult? _defaultInstance;
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.String get runId => $_getSZ(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set runId($core.String value) => $_setString(0, value);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasRunId() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearRunId() => $_clearField(1);
|
||||||
|
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$0.Price get startingCash => $_getN(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
set startingCash($0.Price value) => $_setField(2, value);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$core.bool hasStartingCash() => $_has(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
void clearStartingCash() => $_clearField(2);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$0.Price ensureStartingCash() => $_ensure(1);
|
||||||
|
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
$0.Price get endingEquity => $_getN(2);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
set endingEquity($0.Price value) => $_setField(3, value);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
$core.bool hasEndingEquity() => $_has(2);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
void clearEndingEquity() => $_clearField(3);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
$0.Price ensureEndingEquity() => $_ensure(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
class GetBacktestResultRequest extends $pb.GeneratedMessage {
|
||||||
|
factory GetBacktestResultRequest({
|
||||||
|
$core.String? runId,
|
||||||
|
}) {
|
||||||
|
final result = create();
|
||||||
|
if (runId != null) result.runId = runId;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
GetBacktestResultRequest._();
|
||||||
|
|
||||||
|
factory GetBacktestResultRequest.fromBuffer($core.List<$core.int> data,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromBuffer(data, registry);
|
||||||
|
factory GetBacktestResultRequest.fromJson($core.String json,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromJson(json, registry);
|
||||||
|
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
|
||||||
|
_omitMessageNames ? '' : 'GetBacktestResultRequest',
|
||||||
|
package: const $pb.PackageName(_omitMessageNames ? '' : 'alt.v1'),
|
||||||
|
createEmptyInstance: create)
|
||||||
|
..aOS(1, _omitFieldNames ? '' : 'runId')
|
||||||
|
..hasRequiredFields = false;
|
||||||
|
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
GetBacktestResultRequest clone() => deepCopy();
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
GetBacktestResultRequest copyWith(
|
||||||
|
void Function(GetBacktestResultRequest) updates) =>
|
||||||
|
super.copyWith((message) => updates(message as GetBacktestResultRequest))
|
||||||
|
as GetBacktestResultRequest;
|
||||||
|
|
||||||
|
@$core.override
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static GetBacktestResultRequest create() => GetBacktestResultRequest._();
|
||||||
|
@$core.override
|
||||||
|
GetBacktestResultRequest createEmptyInstance() => create();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static GetBacktestResultRequest getDefault() => _defaultInstance ??=
|
||||||
|
$pb.GeneratedMessage.$_defaultFor<GetBacktestResultRequest>(create);
|
||||||
|
static GetBacktestResultRequest? _defaultInstance;
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.String get runId => $_getSZ(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set runId($core.String value) => $_setString(0, value);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasRunId() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearRunId() => $_clearField(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
class GetBacktestResultResponse extends $pb.GeneratedMessage {
|
||||||
|
factory GetBacktestResultResponse({
|
||||||
|
BacktestResult? result,
|
||||||
|
}) {
|
||||||
|
final result$ = create();
|
||||||
|
if (result != null) result$.result = result;
|
||||||
|
return result$;
|
||||||
|
}
|
||||||
|
|
||||||
|
GetBacktestResultResponse._();
|
||||||
|
|
||||||
|
factory GetBacktestResultResponse.fromBuffer($core.List<$core.int> data,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromBuffer(data, registry);
|
||||||
|
factory GetBacktestResultResponse.fromJson($core.String json,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromJson(json, registry);
|
||||||
|
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
|
||||||
|
_omitMessageNames ? '' : 'GetBacktestResultResponse',
|
||||||
|
package: const $pb.PackageName(_omitMessageNames ? '' : 'alt.v1'),
|
||||||
|
createEmptyInstance: create)
|
||||||
|
..aOM<BacktestResult>(1, _omitFieldNames ? '' : 'result',
|
||||||
|
subBuilder: BacktestResult.create)
|
||||||
|
..hasRequiredFields = false;
|
||||||
|
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
GetBacktestResultResponse clone() => deepCopy();
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
GetBacktestResultResponse copyWith(
|
||||||
|
void Function(GetBacktestResultResponse) updates) =>
|
||||||
|
super.copyWith((message) => updates(message as GetBacktestResultResponse))
|
||||||
|
as GetBacktestResultResponse;
|
||||||
|
|
||||||
|
@$core.override
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static GetBacktestResultResponse create() => GetBacktestResultResponse._();
|
||||||
|
@$core.override
|
||||||
|
GetBacktestResultResponse createEmptyInstance() => create();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static GetBacktestResultResponse getDefault() => _defaultInstance ??=
|
||||||
|
$pb.GeneratedMessage.$_defaultFor<GetBacktestResultResponse>(create);
|
||||||
|
static GetBacktestResultResponse? _defaultInstance;
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
BacktestResult get result => $_getN(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set result(BacktestResult value) => $_setField(1, value);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasResult() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearResult() => $_clearField(1);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
BacktestResult ensureResult() => $_ensure(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
const $core.bool _omitFieldNames =
|
||||||
|
$core.bool.fromEnvironment('protobuf.omit_field_names');
|
||||||
|
const $core.bool _omitMessageNames =
|
||||||
|
$core.bool.fromEnvironment('protobuf.omit_message_names');
|
||||||
55
apps/client/lib/src/generated/alt/v1/backtest.pbenum.dart
Normal file
55
apps/client/lib/src/generated/alt/v1/backtest.pbenum.dart
Normal file
|
|
@ -0,0 +1,55 @@
|
||||||
|
// This is a generated file - do not edit.
|
||||||
|
//
|
||||||
|
// Generated from alt/v1/backtest.proto.
|
||||||
|
|
||||||
|
// @dart = 3.3
|
||||||
|
|
||||||
|
// ignore_for_file: annotate_overrides, camel_case_types, comment_references
|
||||||
|
// ignore_for_file: constant_identifier_names
|
||||||
|
// ignore_for_file: curly_braces_in_flow_control_structures
|
||||||
|
// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes
|
||||||
|
// ignore_for_file: non_constant_identifier_names, prefer_relative_imports
|
||||||
|
|
||||||
|
import 'dart:core' as $core;
|
||||||
|
|
||||||
|
import 'package:protobuf/protobuf.dart' as $pb;
|
||||||
|
|
||||||
|
class BacktestRunStatus extends $pb.ProtobufEnum {
|
||||||
|
static const BacktestRunStatus BACKTEST_RUN_STATUS_UNSPECIFIED =
|
||||||
|
BacktestRunStatus._(
|
||||||
|
0, _omitEnumNames ? '' : 'BACKTEST_RUN_STATUS_UNSPECIFIED');
|
||||||
|
static const BacktestRunStatus BACKTEST_RUN_STATUS_PENDING =
|
||||||
|
BacktestRunStatus._(
|
||||||
|
1, _omitEnumNames ? '' : 'BACKTEST_RUN_STATUS_PENDING');
|
||||||
|
static const BacktestRunStatus BACKTEST_RUN_STATUS_RUNNING =
|
||||||
|
BacktestRunStatus._(
|
||||||
|
2, _omitEnumNames ? '' : 'BACKTEST_RUN_STATUS_RUNNING');
|
||||||
|
static const BacktestRunStatus BACKTEST_RUN_STATUS_SUCCEEDED =
|
||||||
|
BacktestRunStatus._(
|
||||||
|
3, _omitEnumNames ? '' : 'BACKTEST_RUN_STATUS_SUCCEEDED');
|
||||||
|
static const BacktestRunStatus BACKTEST_RUN_STATUS_FAILED =
|
||||||
|
BacktestRunStatus._(
|
||||||
|
4, _omitEnumNames ? '' : 'BACKTEST_RUN_STATUS_FAILED');
|
||||||
|
static const BacktestRunStatus BACKTEST_RUN_STATUS_CANCELED =
|
||||||
|
BacktestRunStatus._(
|
||||||
|
5, _omitEnumNames ? '' : 'BACKTEST_RUN_STATUS_CANCELED');
|
||||||
|
|
||||||
|
static const $core.List<BacktestRunStatus> values = <BacktestRunStatus>[
|
||||||
|
BACKTEST_RUN_STATUS_UNSPECIFIED,
|
||||||
|
BACKTEST_RUN_STATUS_PENDING,
|
||||||
|
BACKTEST_RUN_STATUS_RUNNING,
|
||||||
|
BACKTEST_RUN_STATUS_SUCCEEDED,
|
||||||
|
BACKTEST_RUN_STATUS_FAILED,
|
||||||
|
BACKTEST_RUN_STATUS_CANCELED,
|
||||||
|
];
|
||||||
|
|
||||||
|
static final $core.List<BacktestRunStatus?> _byValue =
|
||||||
|
$pb.ProtobufEnum.$_initByValueList(values, 5);
|
||||||
|
static BacktestRunStatus? valueOf($core.int value) =>
|
||||||
|
value < 0 || value >= _byValue.length ? null : _byValue[value];
|
||||||
|
|
||||||
|
const BacktestRunStatus._(super.value, super.name);
|
||||||
|
}
|
||||||
|
|
||||||
|
const $core.bool _omitEnumNames =
|
||||||
|
$core.bool.fromEnvironment('protobuf.omit_enum_names');
|
||||||
253
apps/client/lib/src/generated/alt/v1/backtest.pbjson.dart
Normal file
253
apps/client/lib/src/generated/alt/v1/backtest.pbjson.dart
Normal file
|
|
@ -0,0 +1,253 @@
|
||||||
|
// This is a generated file - do not edit.
|
||||||
|
//
|
||||||
|
// Generated from alt/v1/backtest.proto.
|
||||||
|
|
||||||
|
// @dart = 3.3
|
||||||
|
|
||||||
|
// ignore_for_file: annotate_overrides, camel_case_types, comment_references
|
||||||
|
// ignore_for_file: constant_identifier_names
|
||||||
|
// ignore_for_file: curly_braces_in_flow_control_structures
|
||||||
|
// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes
|
||||||
|
// ignore_for_file: non_constant_identifier_names, prefer_relative_imports
|
||||||
|
// ignore_for_file: unused_import
|
||||||
|
|
||||||
|
import 'dart:convert' as $convert;
|
||||||
|
import 'dart:core' as $core;
|
||||||
|
import 'dart:typed_data' as $typed_data;
|
||||||
|
|
||||||
|
@$core.Deprecated('Use backtestRunStatusDescriptor instead')
|
||||||
|
const BacktestRunStatus$json = {
|
||||||
|
'1': 'BacktestRunStatus',
|
||||||
|
'2': [
|
||||||
|
{'1': 'BACKTEST_RUN_STATUS_UNSPECIFIED', '2': 0},
|
||||||
|
{'1': 'BACKTEST_RUN_STATUS_PENDING', '2': 1},
|
||||||
|
{'1': 'BACKTEST_RUN_STATUS_RUNNING', '2': 2},
|
||||||
|
{'1': 'BACKTEST_RUN_STATUS_SUCCEEDED', '2': 3},
|
||||||
|
{'1': 'BACKTEST_RUN_STATUS_FAILED', '2': 4},
|
||||||
|
{'1': 'BACKTEST_RUN_STATUS_CANCELED', '2': 5},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `BacktestRunStatus`. Decode as a `google.protobuf.EnumDescriptorProto`.
|
||||||
|
final $typed_data.Uint8List backtestRunStatusDescriptor = $convert.base64Decode(
|
||||||
|
'ChFCYWNrdGVzdFJ1blN0YXR1cxIjCh9CQUNLVEVTVF9SVU5fU1RBVFVTX1VOU1BFQ0lGSUVEEA'
|
||||||
|
'ASHwobQkFDS1RFU1RfUlVOX1NUQVRVU19QRU5ESU5HEAESHwobQkFDS1RFU1RfUlVOX1NUQVRV'
|
||||||
|
'U19SVU5OSU5HEAISIQodQkFDS1RFU1RfUlVOX1NUQVRVU19TVUNDRUVERUQQAxIeChpCQUNLVE'
|
||||||
|
'VTVF9SVU5fU1RBVFVTX0ZBSUxFRBAEEiAKHEJBQ0tURVNUX1JVTl9TVEFUVVNfQ0FOQ0VMRUQQ'
|
||||||
|
'BQ==');
|
||||||
|
|
||||||
|
@$core.Deprecated('Use backtestRunSpecDescriptor instead')
|
||||||
|
const BacktestRunSpec$json = {
|
||||||
|
'1': 'BacktestRunSpec',
|
||||||
|
'2': [
|
||||||
|
{'1': 'strategy_id', '3': 1, '4': 1, '5': 9, '10': 'strategyId'},
|
||||||
|
{
|
||||||
|
'1': 'market',
|
||||||
|
'3': 2,
|
||||||
|
'4': 1,
|
||||||
|
'5': 14,
|
||||||
|
'6': '.alt.v1.Market',
|
||||||
|
'10': 'market'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'1': 'timeframe',
|
||||||
|
'3': 3,
|
||||||
|
'4': 1,
|
||||||
|
'5': 14,
|
||||||
|
'6': '.alt.v1.Timeframe',
|
||||||
|
'10': 'timeframe'
|
||||||
|
},
|
||||||
|
{'1': 'from_unix_ms', '3': 4, '4': 1, '5': 3, '10': 'fromUnixMs'},
|
||||||
|
{'1': 'to_unix_ms', '3': 5, '4': 1, '5': 3, '10': 'toUnixMs'},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `BacktestRunSpec`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List backtestRunSpecDescriptor = $convert.base64Decode(
|
||||||
|
'Cg9CYWNrdGVzdFJ1blNwZWMSHwoLc3RyYXRlZ3lfaWQYASABKAlSCnN0cmF0ZWd5SWQSJgoGbW'
|
||||||
|
'Fya2V0GAIgASgOMg4uYWx0LnYxLk1hcmtldFIGbWFya2V0Ei8KCXRpbWVmcmFtZRgDIAEoDjIR'
|
||||||
|
'LmFsdC52MS5UaW1lZnJhbWVSCXRpbWVmcmFtZRIgCgxmcm9tX3VuaXhfbXMYBCABKANSCmZyb2'
|
||||||
|
'1Vbml4TXMSHAoKdG9fdW5peF9tcxgFIAEoA1IIdG9Vbml4TXM=');
|
||||||
|
|
||||||
|
@$core.Deprecated('Use backtestRunDescriptor instead')
|
||||||
|
const BacktestRun$json = {
|
||||||
|
'1': 'BacktestRun',
|
||||||
|
'2': [
|
||||||
|
{'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'},
|
||||||
|
{
|
||||||
|
'1': 'spec',
|
||||||
|
'3': 2,
|
||||||
|
'4': 1,
|
||||||
|
'5': 11,
|
||||||
|
'6': '.alt.v1.BacktestRunSpec',
|
||||||
|
'10': 'spec'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'1': 'status',
|
||||||
|
'3': 3,
|
||||||
|
'4': 1,
|
||||||
|
'5': 14,
|
||||||
|
'6': '.alt.v1.BacktestRunStatus',
|
||||||
|
'10': 'status'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'1': 'created_at_unix_ms',
|
||||||
|
'3': 4,
|
||||||
|
'4': 1,
|
||||||
|
'5': 3,
|
||||||
|
'10': 'createdAtUnixMs'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'1': 'updated_at_unix_ms',
|
||||||
|
'3': 5,
|
||||||
|
'4': 1,
|
||||||
|
'5': 3,
|
||||||
|
'10': 'updatedAtUnixMs'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `BacktestRun`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List backtestRunDescriptor = $convert.base64Decode(
|
||||||
|
'CgtCYWNrdGVzdFJ1bhIOCgJpZBgBIAEoCVICaWQSKwoEc3BlYxgCIAEoCzIXLmFsdC52MS5CYW'
|
||||||
|
'NrdGVzdFJ1blNwZWNSBHNwZWMSMQoGc3RhdHVzGAMgASgOMhkuYWx0LnYxLkJhY2t0ZXN0UnVu'
|
||||||
|
'U3RhdHVzUgZzdGF0dXMSKwoSY3JlYXRlZF9hdF91bml4X21zGAQgASgDUg9jcmVhdGVkQXRVbm'
|
||||||
|
'l4TXMSKwoSdXBkYXRlZF9hdF91bml4X21zGAUgASgDUg91cGRhdGVkQXRVbml4TXM=');
|
||||||
|
|
||||||
|
@$core.Deprecated('Use startBacktestRequestDescriptor instead')
|
||||||
|
const StartBacktestRequest$json = {
|
||||||
|
'1': 'StartBacktestRequest',
|
||||||
|
'2': [
|
||||||
|
{
|
||||||
|
'1': 'spec',
|
||||||
|
'3': 1,
|
||||||
|
'4': 1,
|
||||||
|
'5': 11,
|
||||||
|
'6': '.alt.v1.BacktestRunSpec',
|
||||||
|
'10': 'spec'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `StartBacktestRequest`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List startBacktestRequestDescriptor = $convert.base64Decode(
|
||||||
|
'ChRTdGFydEJhY2t0ZXN0UmVxdWVzdBIrCgRzcGVjGAEgASgLMhcuYWx0LnYxLkJhY2t0ZXN0Un'
|
||||||
|
'VuU3BlY1IEc3BlYw==');
|
||||||
|
|
||||||
|
@$core.Deprecated('Use startBacktestResponseDescriptor instead')
|
||||||
|
const StartBacktestResponse$json = {
|
||||||
|
'1': 'StartBacktestResponse',
|
||||||
|
'2': [
|
||||||
|
{
|
||||||
|
'1': 'run',
|
||||||
|
'3': 1,
|
||||||
|
'4': 1,
|
||||||
|
'5': 11,
|
||||||
|
'6': '.alt.v1.BacktestRun',
|
||||||
|
'10': 'run'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `StartBacktestResponse`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List startBacktestResponseDescriptor = $convert.base64Decode(
|
||||||
|
'ChVTdGFydEJhY2t0ZXN0UmVzcG9uc2USJQoDcnVuGAEgASgLMhMuYWx0LnYxLkJhY2t0ZXN0Un'
|
||||||
|
'VuUgNydW4=');
|
||||||
|
|
||||||
|
@$core.Deprecated('Use getBacktestRunRequestDescriptor instead')
|
||||||
|
const GetBacktestRunRequest$json = {
|
||||||
|
'1': 'GetBacktestRunRequest',
|
||||||
|
'2': [
|
||||||
|
{'1': 'run_id', '3': 1, '4': 1, '5': 9, '10': 'runId'},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `GetBacktestRunRequest`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List getBacktestRunRequestDescriptor =
|
||||||
|
$convert.base64Decode(
|
||||||
|
'ChVHZXRCYWNrdGVzdFJ1blJlcXVlc3QSFQoGcnVuX2lkGAEgASgJUgVydW5JZA==');
|
||||||
|
|
||||||
|
@$core.Deprecated('Use getBacktestRunResponseDescriptor instead')
|
||||||
|
const GetBacktestRunResponse$json = {
|
||||||
|
'1': 'GetBacktestRunResponse',
|
||||||
|
'2': [
|
||||||
|
{
|
||||||
|
'1': 'run',
|
||||||
|
'3': 1,
|
||||||
|
'4': 1,
|
||||||
|
'5': 11,
|
||||||
|
'6': '.alt.v1.BacktestRun',
|
||||||
|
'10': 'run'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `GetBacktestRunResponse`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List getBacktestRunResponseDescriptor =
|
||||||
|
$convert.base64Decode(
|
||||||
|
'ChZHZXRCYWNrdGVzdFJ1blJlc3BvbnNlEiUKA3J1bhgBIAEoCzITLmFsdC52MS5CYWNrdGVzdF'
|
||||||
|
'J1blIDcnVu');
|
||||||
|
|
||||||
|
@$core.Deprecated('Use backtestResultDescriptor instead')
|
||||||
|
const BacktestResult$json = {
|
||||||
|
'1': 'BacktestResult',
|
||||||
|
'2': [
|
||||||
|
{'1': 'run_id', '3': 1, '4': 1, '5': 9, '10': 'runId'},
|
||||||
|
{
|
||||||
|
'1': 'starting_cash',
|
||||||
|
'3': 2,
|
||||||
|
'4': 1,
|
||||||
|
'5': 11,
|
||||||
|
'6': '.alt.v1.Price',
|
||||||
|
'10': 'startingCash'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'1': 'ending_equity',
|
||||||
|
'3': 3,
|
||||||
|
'4': 1,
|
||||||
|
'5': 11,
|
||||||
|
'6': '.alt.v1.Price',
|
||||||
|
'10': 'endingEquity'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `BacktestResult`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List backtestResultDescriptor = $convert.base64Decode(
|
||||||
|
'Cg5CYWNrdGVzdFJlc3VsdBIVCgZydW5faWQYASABKAlSBXJ1bklkEjIKDXN0YXJ0aW5nX2Nhc2'
|
||||||
|
'gYAiABKAsyDS5hbHQudjEuUHJpY2VSDHN0YXJ0aW5nQ2FzaBIyCg1lbmRpbmdfZXF1aXR5GAMg'
|
||||||
|
'ASgLMg0uYWx0LnYxLlByaWNlUgxlbmRpbmdFcXVpdHk=');
|
||||||
|
|
||||||
|
@$core.Deprecated('Use getBacktestResultRequestDescriptor instead')
|
||||||
|
const GetBacktestResultRequest$json = {
|
||||||
|
'1': 'GetBacktestResultRequest',
|
||||||
|
'2': [
|
||||||
|
{'1': 'run_id', '3': 1, '4': 1, '5': 9, '10': 'runId'},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `GetBacktestResultRequest`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List getBacktestResultRequestDescriptor =
|
||||||
|
$convert.base64Decode(
|
||||||
|
'ChhHZXRCYWNrdGVzdFJlc3VsdFJlcXVlc3QSFQoGcnVuX2lkGAEgASgJUgVydW5JZA==');
|
||||||
|
|
||||||
|
@$core.Deprecated('Use getBacktestResultResponseDescriptor instead')
|
||||||
|
const GetBacktestResultResponse$json = {
|
||||||
|
'1': 'GetBacktestResultResponse',
|
||||||
|
'2': [
|
||||||
|
{
|
||||||
|
'1': 'result',
|
||||||
|
'3': 1,
|
||||||
|
'4': 1,
|
||||||
|
'5': 11,
|
||||||
|
'6': '.alt.v1.BacktestResult',
|
||||||
|
'10': 'result'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `GetBacktestResultResponse`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List getBacktestResultResponseDescriptor =
|
||||||
|
$convert.base64Decode(
|
||||||
|
'ChlHZXRCYWNrdGVzdFJlc3VsdFJlc3BvbnNlEi4KBnJlc3VsdBgBIAEoCzIWLmFsdC52MS5CYW'
|
||||||
|
'NrdGVzdFJlc3VsdFIGcmVzdWx0');
|
||||||
306
apps/client/lib/src/generated/alt/v1/common.pb.dart
Normal file
306
apps/client/lib/src/generated/alt/v1/common.pb.dart
Normal file
|
|
@ -0,0 +1,306 @@
|
||||||
|
// This is a generated file - do not edit.
|
||||||
|
//
|
||||||
|
// Generated from alt/v1/common.proto.
|
||||||
|
|
||||||
|
// @dart = 3.3
|
||||||
|
|
||||||
|
// ignore_for_file: annotate_overrides, camel_case_types, comment_references
|
||||||
|
// ignore_for_file: constant_identifier_names
|
||||||
|
// ignore_for_file: curly_braces_in_flow_control_structures
|
||||||
|
// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes
|
||||||
|
// ignore_for_file: non_constant_identifier_names, prefer_relative_imports
|
||||||
|
|
||||||
|
import 'dart:core' as $core;
|
||||||
|
|
||||||
|
import 'package:protobuf/protobuf.dart' as $pb;
|
||||||
|
|
||||||
|
export 'package:protobuf/protobuf.dart' show GeneratedMessageGenericExtensions;
|
||||||
|
|
||||||
|
export 'common.pbenum.dart';
|
||||||
|
|
||||||
|
class Decimal extends $pb.GeneratedMessage {
|
||||||
|
factory Decimal({
|
||||||
|
$core.String? value,
|
||||||
|
}) {
|
||||||
|
final result = create();
|
||||||
|
if (value != null) result.value = value;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
Decimal._();
|
||||||
|
|
||||||
|
factory Decimal.fromBuffer($core.List<$core.int> data,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromBuffer(data, registry);
|
||||||
|
factory Decimal.fromJson($core.String json,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromJson(json, registry);
|
||||||
|
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
|
||||||
|
_omitMessageNames ? '' : 'Decimal',
|
||||||
|
package: const $pb.PackageName(_omitMessageNames ? '' : 'alt.v1'),
|
||||||
|
createEmptyInstance: create)
|
||||||
|
..aOS(1, _omitFieldNames ? '' : 'value')
|
||||||
|
..hasRequiredFields = false;
|
||||||
|
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
Decimal clone() => deepCopy();
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
Decimal copyWith(void Function(Decimal) updates) =>
|
||||||
|
super.copyWith((message) => updates(message as Decimal)) as Decimal;
|
||||||
|
|
||||||
|
@$core.override
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static Decimal create() => Decimal._();
|
||||||
|
@$core.override
|
||||||
|
Decimal createEmptyInstance() => create();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static Decimal getDefault() =>
|
||||||
|
_defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Decimal>(create);
|
||||||
|
static Decimal? _defaultInstance;
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.String get value => $_getSZ(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set value($core.String value) => $_setString(0, value);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasValue() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearValue() => $_clearField(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
class ErrorInfo extends $pb.GeneratedMessage {
|
||||||
|
factory ErrorInfo({
|
||||||
|
$core.String? code,
|
||||||
|
$core.String? message,
|
||||||
|
}) {
|
||||||
|
final result = create();
|
||||||
|
if (code != null) result.code = code;
|
||||||
|
if (message != null) result.message = message;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
ErrorInfo._();
|
||||||
|
|
||||||
|
factory ErrorInfo.fromBuffer($core.List<$core.int> data,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromBuffer(data, registry);
|
||||||
|
factory ErrorInfo.fromJson($core.String json,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromJson(json, registry);
|
||||||
|
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
|
||||||
|
_omitMessageNames ? '' : 'ErrorInfo',
|
||||||
|
package: const $pb.PackageName(_omitMessageNames ? '' : 'alt.v1'),
|
||||||
|
createEmptyInstance: create)
|
||||||
|
..aOS(1, _omitFieldNames ? '' : 'code')
|
||||||
|
..aOS(2, _omitFieldNames ? '' : 'message')
|
||||||
|
..hasRequiredFields = false;
|
||||||
|
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
ErrorInfo clone() => deepCopy();
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
ErrorInfo copyWith(void Function(ErrorInfo) updates) =>
|
||||||
|
super.copyWith((message) => updates(message as ErrorInfo)) as ErrorInfo;
|
||||||
|
|
||||||
|
@$core.override
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static ErrorInfo create() => ErrorInfo._();
|
||||||
|
@$core.override
|
||||||
|
ErrorInfo createEmptyInstance() => create();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static ErrorInfo getDefault() =>
|
||||||
|
_defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ErrorInfo>(create);
|
||||||
|
static ErrorInfo? _defaultInstance;
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.String get code => $_getSZ(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set code($core.String value) => $_setString(0, value);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasCode() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearCode() => $_clearField(1);
|
||||||
|
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$core.String get message => $_getSZ(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
set message($core.String value) => $_setString(1, value);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$core.bool hasMessage() => $_has(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
void clearMessage() => $_clearField(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
class HelloRequest extends $pb.GeneratedMessage {
|
||||||
|
factory HelloRequest({
|
||||||
|
$core.String? clientName,
|
||||||
|
$core.String? clientVersion,
|
||||||
|
$core.String? altProtocolVersion,
|
||||||
|
}) {
|
||||||
|
final result = create();
|
||||||
|
if (clientName != null) result.clientName = clientName;
|
||||||
|
if (clientVersion != null) result.clientVersion = clientVersion;
|
||||||
|
if (altProtocolVersion != null)
|
||||||
|
result.altProtocolVersion = altProtocolVersion;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
HelloRequest._();
|
||||||
|
|
||||||
|
factory HelloRequest.fromBuffer($core.List<$core.int> data,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromBuffer(data, registry);
|
||||||
|
factory HelloRequest.fromJson($core.String json,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromJson(json, registry);
|
||||||
|
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
|
||||||
|
_omitMessageNames ? '' : 'HelloRequest',
|
||||||
|
package: const $pb.PackageName(_omitMessageNames ? '' : 'alt.v1'),
|
||||||
|
createEmptyInstance: create)
|
||||||
|
..aOS(1, _omitFieldNames ? '' : 'clientName')
|
||||||
|
..aOS(2, _omitFieldNames ? '' : 'clientVersion')
|
||||||
|
..aOS(3, _omitFieldNames ? '' : 'altProtocolVersion')
|
||||||
|
..hasRequiredFields = false;
|
||||||
|
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
HelloRequest clone() => deepCopy();
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
HelloRequest copyWith(void Function(HelloRequest) updates) =>
|
||||||
|
super.copyWith((message) => updates(message as HelloRequest))
|
||||||
|
as HelloRequest;
|
||||||
|
|
||||||
|
@$core.override
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static HelloRequest create() => HelloRequest._();
|
||||||
|
@$core.override
|
||||||
|
HelloRequest createEmptyInstance() => create();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static HelloRequest getDefault() => _defaultInstance ??=
|
||||||
|
$pb.GeneratedMessage.$_defaultFor<HelloRequest>(create);
|
||||||
|
static HelloRequest? _defaultInstance;
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.String get clientName => $_getSZ(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set clientName($core.String value) => $_setString(0, value);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasClientName() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearClientName() => $_clearField(1);
|
||||||
|
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$core.String get clientVersion => $_getSZ(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
set clientVersion($core.String value) => $_setString(1, value);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$core.bool hasClientVersion() => $_has(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
void clearClientVersion() => $_clearField(2);
|
||||||
|
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
$core.String get altProtocolVersion => $_getSZ(2);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
set altProtocolVersion($core.String value) => $_setString(2, value);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
$core.bool hasAltProtocolVersion() => $_has(2);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
void clearAltProtocolVersion() => $_clearField(3);
|
||||||
|
}
|
||||||
|
|
||||||
|
class HelloResponse extends $pb.GeneratedMessage {
|
||||||
|
factory HelloResponse({
|
||||||
|
$core.String? serverName,
|
||||||
|
$core.String? serverVersion,
|
||||||
|
$core.String? altProtocolVersion,
|
||||||
|
$core.Iterable<$core.String>? capabilities,
|
||||||
|
}) {
|
||||||
|
final result = create();
|
||||||
|
if (serverName != null) result.serverName = serverName;
|
||||||
|
if (serverVersion != null) result.serverVersion = serverVersion;
|
||||||
|
if (altProtocolVersion != null)
|
||||||
|
result.altProtocolVersion = altProtocolVersion;
|
||||||
|
if (capabilities != null) result.capabilities.addAll(capabilities);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
HelloResponse._();
|
||||||
|
|
||||||
|
factory HelloResponse.fromBuffer($core.List<$core.int> data,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromBuffer(data, registry);
|
||||||
|
factory HelloResponse.fromJson($core.String json,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromJson(json, registry);
|
||||||
|
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
|
||||||
|
_omitMessageNames ? '' : 'HelloResponse',
|
||||||
|
package: const $pb.PackageName(_omitMessageNames ? '' : 'alt.v1'),
|
||||||
|
createEmptyInstance: create)
|
||||||
|
..aOS(1, _omitFieldNames ? '' : 'serverName')
|
||||||
|
..aOS(2, _omitFieldNames ? '' : 'serverVersion')
|
||||||
|
..aOS(3, _omitFieldNames ? '' : 'altProtocolVersion')
|
||||||
|
..pPS(4, _omitFieldNames ? '' : 'capabilities')
|
||||||
|
..hasRequiredFields = false;
|
||||||
|
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
HelloResponse clone() => deepCopy();
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
HelloResponse copyWith(void Function(HelloResponse) updates) =>
|
||||||
|
super.copyWith((message) => updates(message as HelloResponse))
|
||||||
|
as HelloResponse;
|
||||||
|
|
||||||
|
@$core.override
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static HelloResponse create() => HelloResponse._();
|
||||||
|
@$core.override
|
||||||
|
HelloResponse createEmptyInstance() => create();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static HelloResponse getDefault() => _defaultInstance ??=
|
||||||
|
$pb.GeneratedMessage.$_defaultFor<HelloResponse>(create);
|
||||||
|
static HelloResponse? _defaultInstance;
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.String get serverName => $_getSZ(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set serverName($core.String value) => $_setString(0, value);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasServerName() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearServerName() => $_clearField(1);
|
||||||
|
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$core.String get serverVersion => $_getSZ(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
set serverVersion($core.String value) => $_setString(1, value);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$core.bool hasServerVersion() => $_has(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
void clearServerVersion() => $_clearField(2);
|
||||||
|
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
$core.String get altProtocolVersion => $_getSZ(2);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
set altProtocolVersion($core.String value) => $_setString(2, value);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
$core.bool hasAltProtocolVersion() => $_has(2);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
void clearAltProtocolVersion() => $_clearField(3);
|
||||||
|
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
$pb.PbList<$core.String> get capabilities => $_getList(3);
|
||||||
|
}
|
||||||
|
|
||||||
|
const $core.bool _omitFieldNames =
|
||||||
|
$core.bool.fromEnvironment('protobuf.omit_field_names');
|
||||||
|
const $core.bool _omitMessageNames =
|
||||||
|
$core.bool.fromEnvironment('protobuf.omit_message_names');
|
||||||
111
apps/client/lib/src/generated/alt/v1/common.pbenum.dart
Normal file
111
apps/client/lib/src/generated/alt/v1/common.pbenum.dart
Normal file
|
|
@ -0,0 +1,111 @@
|
||||||
|
// This is a generated file - do not edit.
|
||||||
|
//
|
||||||
|
// Generated from alt/v1/common.proto.
|
||||||
|
|
||||||
|
// @dart = 3.3
|
||||||
|
|
||||||
|
// ignore_for_file: annotate_overrides, camel_case_types, comment_references
|
||||||
|
// ignore_for_file: constant_identifier_names
|
||||||
|
// ignore_for_file: curly_braces_in_flow_control_structures
|
||||||
|
// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes
|
||||||
|
// ignore_for_file: non_constant_identifier_names, prefer_relative_imports
|
||||||
|
|
||||||
|
import 'dart:core' as $core;
|
||||||
|
|
||||||
|
import 'package:protobuf/protobuf.dart' as $pb;
|
||||||
|
|
||||||
|
class Market extends $pb.ProtobufEnum {
|
||||||
|
static const Market MARKET_UNSPECIFIED =
|
||||||
|
Market._(0, _omitEnumNames ? '' : 'MARKET_UNSPECIFIED');
|
||||||
|
static const Market MARKET_KR =
|
||||||
|
Market._(1, _omitEnumNames ? '' : 'MARKET_KR');
|
||||||
|
static const Market MARKET_US =
|
||||||
|
Market._(2, _omitEnumNames ? '' : 'MARKET_US');
|
||||||
|
|
||||||
|
static const $core.List<Market> values = <Market>[
|
||||||
|
MARKET_UNSPECIFIED,
|
||||||
|
MARKET_KR,
|
||||||
|
MARKET_US,
|
||||||
|
];
|
||||||
|
|
||||||
|
static final $core.List<Market?> _byValue =
|
||||||
|
$pb.ProtobufEnum.$_initByValueList(values, 2);
|
||||||
|
static Market? valueOf($core.int value) =>
|
||||||
|
value < 0 || value >= _byValue.length ? null : _byValue[value];
|
||||||
|
|
||||||
|
const Market._(super.value, super.name);
|
||||||
|
}
|
||||||
|
|
||||||
|
class Venue extends $pb.ProtobufEnum {
|
||||||
|
static const Venue VENUE_UNSPECIFIED =
|
||||||
|
Venue._(0, _omitEnumNames ? '' : 'VENUE_UNSPECIFIED');
|
||||||
|
static const Venue VENUE_KRX = Venue._(1, _omitEnumNames ? '' : 'VENUE_KRX');
|
||||||
|
static const Venue VENUE_NASDAQ =
|
||||||
|
Venue._(2, _omitEnumNames ? '' : 'VENUE_NASDAQ');
|
||||||
|
static const Venue VENUE_NYSE =
|
||||||
|
Venue._(3, _omitEnumNames ? '' : 'VENUE_NYSE');
|
||||||
|
|
||||||
|
static const $core.List<Venue> values = <Venue>[
|
||||||
|
VENUE_UNSPECIFIED,
|
||||||
|
VENUE_KRX,
|
||||||
|
VENUE_NASDAQ,
|
||||||
|
VENUE_NYSE,
|
||||||
|
];
|
||||||
|
|
||||||
|
static final $core.List<Venue?> _byValue =
|
||||||
|
$pb.ProtobufEnum.$_initByValueList(values, 3);
|
||||||
|
static Venue? valueOf($core.int value) =>
|
||||||
|
value < 0 || value >= _byValue.length ? null : _byValue[value];
|
||||||
|
|
||||||
|
const Venue._(super.value, super.name);
|
||||||
|
}
|
||||||
|
|
||||||
|
class Currency extends $pb.ProtobufEnum {
|
||||||
|
static const Currency CURRENCY_UNSPECIFIED =
|
||||||
|
Currency._(0, _omitEnumNames ? '' : 'CURRENCY_UNSPECIFIED');
|
||||||
|
static const Currency CURRENCY_KRW =
|
||||||
|
Currency._(1, _omitEnumNames ? '' : 'CURRENCY_KRW');
|
||||||
|
static const Currency CURRENCY_USD =
|
||||||
|
Currency._(2, _omitEnumNames ? '' : 'CURRENCY_USD');
|
||||||
|
|
||||||
|
static const $core.List<Currency> values = <Currency>[
|
||||||
|
CURRENCY_UNSPECIFIED,
|
||||||
|
CURRENCY_KRW,
|
||||||
|
CURRENCY_USD,
|
||||||
|
];
|
||||||
|
|
||||||
|
static final $core.List<Currency?> _byValue =
|
||||||
|
$pb.ProtobufEnum.$_initByValueList(values, 2);
|
||||||
|
static Currency? valueOf($core.int value) =>
|
||||||
|
value < 0 || value >= _byValue.length ? null : _byValue[value];
|
||||||
|
|
||||||
|
const Currency._(super.value, super.name);
|
||||||
|
}
|
||||||
|
|
||||||
|
class Timeframe extends $pb.ProtobufEnum {
|
||||||
|
static const Timeframe TIMEFRAME_UNSPECIFIED =
|
||||||
|
Timeframe._(0, _omitEnumNames ? '' : 'TIMEFRAME_UNSPECIFIED');
|
||||||
|
static const Timeframe TIMEFRAME_DAILY =
|
||||||
|
Timeframe._(1, _omitEnumNames ? '' : 'TIMEFRAME_DAILY');
|
||||||
|
static const Timeframe TIMEFRAME_MINUTE_1 =
|
||||||
|
Timeframe._(2, _omitEnumNames ? '' : 'TIMEFRAME_MINUTE_1');
|
||||||
|
static const Timeframe TIMEFRAME_MINUTE_5 =
|
||||||
|
Timeframe._(3, _omitEnumNames ? '' : 'TIMEFRAME_MINUTE_5');
|
||||||
|
|
||||||
|
static const $core.List<Timeframe> values = <Timeframe>[
|
||||||
|
TIMEFRAME_UNSPECIFIED,
|
||||||
|
TIMEFRAME_DAILY,
|
||||||
|
TIMEFRAME_MINUTE_1,
|
||||||
|
TIMEFRAME_MINUTE_5,
|
||||||
|
];
|
||||||
|
|
||||||
|
static final $core.List<Timeframe?> _byValue =
|
||||||
|
$pb.ProtobufEnum.$_initByValueList(values, 3);
|
||||||
|
static Timeframe? valueOf($core.int value) =>
|
||||||
|
value < 0 || value >= _byValue.length ? null : _byValue[value];
|
||||||
|
|
||||||
|
const Timeframe._(super.value, super.name);
|
||||||
|
}
|
||||||
|
|
||||||
|
const $core.bool _omitEnumNames =
|
||||||
|
$core.bool.fromEnvironment('protobuf.omit_enum_names');
|
||||||
150
apps/client/lib/src/generated/alt/v1/common.pbjson.dart
Normal file
150
apps/client/lib/src/generated/alt/v1/common.pbjson.dart
Normal file
|
|
@ -0,0 +1,150 @@
|
||||||
|
// This is a generated file - do not edit.
|
||||||
|
//
|
||||||
|
// Generated from alt/v1/common.proto.
|
||||||
|
|
||||||
|
// @dart = 3.3
|
||||||
|
|
||||||
|
// ignore_for_file: annotate_overrides, camel_case_types, comment_references
|
||||||
|
// ignore_for_file: constant_identifier_names
|
||||||
|
// ignore_for_file: curly_braces_in_flow_control_structures
|
||||||
|
// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes
|
||||||
|
// ignore_for_file: non_constant_identifier_names, prefer_relative_imports
|
||||||
|
// ignore_for_file: unused_import
|
||||||
|
|
||||||
|
import 'dart:convert' as $convert;
|
||||||
|
import 'dart:core' as $core;
|
||||||
|
import 'dart:typed_data' as $typed_data;
|
||||||
|
|
||||||
|
@$core.Deprecated('Use marketDescriptor instead')
|
||||||
|
const Market$json = {
|
||||||
|
'1': 'Market',
|
||||||
|
'2': [
|
||||||
|
{'1': 'MARKET_UNSPECIFIED', '2': 0},
|
||||||
|
{'1': 'MARKET_KR', '2': 1},
|
||||||
|
{'1': 'MARKET_US', '2': 2},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `Market`. Decode as a `google.protobuf.EnumDescriptorProto`.
|
||||||
|
final $typed_data.Uint8List marketDescriptor = $convert.base64Decode(
|
||||||
|
'CgZNYXJrZXQSFgoSTUFSS0VUX1VOU1BFQ0lGSUVEEAASDQoJTUFSS0VUX0tSEAESDQoJTUFSS0'
|
||||||
|
'VUX1VTEAI=');
|
||||||
|
|
||||||
|
@$core.Deprecated('Use venueDescriptor instead')
|
||||||
|
const Venue$json = {
|
||||||
|
'1': 'Venue',
|
||||||
|
'2': [
|
||||||
|
{'1': 'VENUE_UNSPECIFIED', '2': 0},
|
||||||
|
{'1': 'VENUE_KRX', '2': 1},
|
||||||
|
{'1': 'VENUE_NASDAQ', '2': 2},
|
||||||
|
{'1': 'VENUE_NYSE', '2': 3},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `Venue`. Decode as a `google.protobuf.EnumDescriptorProto`.
|
||||||
|
final $typed_data.Uint8List venueDescriptor = $convert.base64Decode(
|
||||||
|
'CgVWZW51ZRIVChFWRU5VRV9VTlNQRUNJRklFRBAAEg0KCVZFTlVFX0tSWBABEhAKDFZFTlVFX0'
|
||||||
|
'5BU0RBURACEg4KClZFTlVFX05ZU0UQAw==');
|
||||||
|
|
||||||
|
@$core.Deprecated('Use currencyDescriptor instead')
|
||||||
|
const Currency$json = {
|
||||||
|
'1': 'Currency',
|
||||||
|
'2': [
|
||||||
|
{'1': 'CURRENCY_UNSPECIFIED', '2': 0},
|
||||||
|
{'1': 'CURRENCY_KRW', '2': 1},
|
||||||
|
{'1': 'CURRENCY_USD', '2': 2},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `Currency`. Decode as a `google.protobuf.EnumDescriptorProto`.
|
||||||
|
final $typed_data.Uint8List currencyDescriptor = $convert.base64Decode(
|
||||||
|
'CghDdXJyZW5jeRIYChRDVVJSRU5DWV9VTlNQRUNJRklFRBAAEhAKDENVUlJFTkNZX0tSVxABEh'
|
||||||
|
'AKDENVUlJFTkNZX1VTRBAC');
|
||||||
|
|
||||||
|
@$core.Deprecated('Use timeframeDescriptor instead')
|
||||||
|
const Timeframe$json = {
|
||||||
|
'1': 'Timeframe',
|
||||||
|
'2': [
|
||||||
|
{'1': 'TIMEFRAME_UNSPECIFIED', '2': 0},
|
||||||
|
{'1': 'TIMEFRAME_DAILY', '2': 1},
|
||||||
|
{'1': 'TIMEFRAME_MINUTE_1', '2': 2},
|
||||||
|
{'1': 'TIMEFRAME_MINUTE_5', '2': 3},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `Timeframe`. Decode as a `google.protobuf.EnumDescriptorProto`.
|
||||||
|
final $typed_data.Uint8List timeframeDescriptor = $convert.base64Decode(
|
||||||
|
'CglUaW1lZnJhbWUSGQoVVElNRUZSQU1FX1VOU1BFQ0lGSUVEEAASEwoPVElNRUZSQU1FX0RBSU'
|
||||||
|
'xZEAESFgoSVElNRUZSQU1FX01JTlVURV8xEAISFgoSVElNRUZSQU1FX01JTlVURV81EAM=');
|
||||||
|
|
||||||
|
@$core.Deprecated('Use decimalDescriptor instead')
|
||||||
|
const Decimal$json = {
|
||||||
|
'1': 'Decimal',
|
||||||
|
'2': [
|
||||||
|
{'1': 'value', '3': 1, '4': 1, '5': 9, '10': 'value'},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `Decimal`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List decimalDescriptor =
|
||||||
|
$convert.base64Decode('CgdEZWNpbWFsEhQKBXZhbHVlGAEgASgJUgV2YWx1ZQ==');
|
||||||
|
|
||||||
|
@$core.Deprecated('Use errorInfoDescriptor instead')
|
||||||
|
const ErrorInfo$json = {
|
||||||
|
'1': 'ErrorInfo',
|
||||||
|
'2': [
|
||||||
|
{'1': 'code', '3': 1, '4': 1, '5': 9, '10': 'code'},
|
||||||
|
{'1': 'message', '3': 2, '4': 1, '5': 9, '10': 'message'},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `ErrorInfo`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List errorInfoDescriptor = $convert.base64Decode(
|
||||||
|
'CglFcnJvckluZm8SEgoEY29kZRgBIAEoCVIEY29kZRIYCgdtZXNzYWdlGAIgASgJUgdtZXNzYW'
|
||||||
|
'dl');
|
||||||
|
|
||||||
|
@$core.Deprecated('Use helloRequestDescriptor instead')
|
||||||
|
const HelloRequest$json = {
|
||||||
|
'1': 'HelloRequest',
|
||||||
|
'2': [
|
||||||
|
{'1': 'client_name', '3': 1, '4': 1, '5': 9, '10': 'clientName'},
|
||||||
|
{'1': 'client_version', '3': 2, '4': 1, '5': 9, '10': 'clientVersion'},
|
||||||
|
{
|
||||||
|
'1': 'alt_protocol_version',
|
||||||
|
'3': 3,
|
||||||
|
'4': 1,
|
||||||
|
'5': 9,
|
||||||
|
'10': 'altProtocolVersion'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `HelloRequest`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List helloRequestDescriptor = $convert.base64Decode(
|
||||||
|
'CgxIZWxsb1JlcXVlc3QSHwoLY2xpZW50X25hbWUYASABKAlSCmNsaWVudE5hbWUSJQoOY2xpZW'
|
||||||
|
'50X3ZlcnNpb24YAiABKAlSDWNsaWVudFZlcnNpb24SMAoUYWx0X3Byb3RvY29sX3ZlcnNpb24Y'
|
||||||
|
'AyABKAlSEmFsdFByb3RvY29sVmVyc2lvbg==');
|
||||||
|
|
||||||
|
@$core.Deprecated('Use helloResponseDescriptor instead')
|
||||||
|
const HelloResponse$json = {
|
||||||
|
'1': 'HelloResponse',
|
||||||
|
'2': [
|
||||||
|
{'1': 'server_name', '3': 1, '4': 1, '5': 9, '10': 'serverName'},
|
||||||
|
{'1': 'server_version', '3': 2, '4': 1, '5': 9, '10': 'serverVersion'},
|
||||||
|
{
|
||||||
|
'1': 'alt_protocol_version',
|
||||||
|
'3': 3,
|
||||||
|
'4': 1,
|
||||||
|
'5': 9,
|
||||||
|
'10': 'altProtocolVersion'
|
||||||
|
},
|
||||||
|
{'1': 'capabilities', '3': 4, '4': 3, '5': 9, '10': 'capabilities'},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `HelloResponse`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List helloResponseDescriptor = $convert.base64Decode(
|
||||||
|
'Cg1IZWxsb1Jlc3BvbnNlEh8KC3NlcnZlcl9uYW1lGAEgASgJUgpzZXJ2ZXJOYW1lEiUKDnNlcn'
|
||||||
|
'Zlcl92ZXJzaW9uGAIgASgJUg1zZXJ2ZXJWZXJzaW9uEjAKFGFsdF9wcm90b2NvbF92ZXJzaW9u'
|
||||||
|
'GAMgASgJUhJhbHRQcm90b2NvbFZlcnNpb24SIgoMY2FwYWJpbGl0aWVzGAQgAygJUgxjYXBhYm'
|
||||||
|
'lsaXRpZXM=');
|
||||||
683
apps/client/lib/src/generated/alt/v1/market.pb.dart
Normal file
683
apps/client/lib/src/generated/alt/v1/market.pb.dart
Normal file
|
|
@ -0,0 +1,683 @@
|
||||||
|
// This is a generated file - do not edit.
|
||||||
|
//
|
||||||
|
// Generated from alt/v1/market.proto.
|
||||||
|
|
||||||
|
// @dart = 3.3
|
||||||
|
|
||||||
|
// ignore_for_file: annotate_overrides, camel_case_types, comment_references
|
||||||
|
// ignore_for_file: constant_identifier_names
|
||||||
|
// ignore_for_file: curly_braces_in_flow_control_structures
|
||||||
|
// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes
|
||||||
|
// ignore_for_file: non_constant_identifier_names, prefer_relative_imports
|
||||||
|
|
||||||
|
import 'dart:core' as $core;
|
||||||
|
|
||||||
|
import 'package:fixnum/fixnum.dart' as $fixnum;
|
||||||
|
import 'package:protobuf/protobuf.dart' as $pb;
|
||||||
|
|
||||||
|
import 'common.pb.dart' as $0;
|
||||||
|
|
||||||
|
export 'package:protobuf/protobuf.dart' show GeneratedMessageGenericExtensions;
|
||||||
|
|
||||||
|
class Instrument extends $pb.GeneratedMessage {
|
||||||
|
factory Instrument({
|
||||||
|
$core.String? id,
|
||||||
|
$0.Market? market,
|
||||||
|
$0.Venue? venue,
|
||||||
|
$core.String? symbol,
|
||||||
|
$core.String? name,
|
||||||
|
$0.Currency? currency,
|
||||||
|
$core.Iterable<$core.MapEntry<$core.String, $core.String>>? providerSymbols,
|
||||||
|
}) {
|
||||||
|
final result = create();
|
||||||
|
if (id != null) result.id = id;
|
||||||
|
if (market != null) result.market = market;
|
||||||
|
if (venue != null) result.venue = venue;
|
||||||
|
if (symbol != null) result.symbol = symbol;
|
||||||
|
if (name != null) result.name = name;
|
||||||
|
if (currency != null) result.currency = currency;
|
||||||
|
if (providerSymbols != null)
|
||||||
|
result.providerSymbols.addEntries(providerSymbols);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
Instrument._();
|
||||||
|
|
||||||
|
factory Instrument.fromBuffer($core.List<$core.int> data,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromBuffer(data, registry);
|
||||||
|
factory Instrument.fromJson($core.String json,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromJson(json, registry);
|
||||||
|
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
|
||||||
|
_omitMessageNames ? '' : 'Instrument',
|
||||||
|
package: const $pb.PackageName(_omitMessageNames ? '' : 'alt.v1'),
|
||||||
|
createEmptyInstance: create)
|
||||||
|
..aOS(1, _omitFieldNames ? '' : 'id')
|
||||||
|
..aE<$0.Market>(2, _omitFieldNames ? '' : 'market',
|
||||||
|
enumValues: $0.Market.values)
|
||||||
|
..aE<$0.Venue>(3, _omitFieldNames ? '' : 'venue',
|
||||||
|
enumValues: $0.Venue.values)
|
||||||
|
..aOS(4, _omitFieldNames ? '' : 'symbol')
|
||||||
|
..aOS(5, _omitFieldNames ? '' : 'name')
|
||||||
|
..aE<$0.Currency>(6, _omitFieldNames ? '' : 'currency',
|
||||||
|
enumValues: $0.Currency.values)
|
||||||
|
..m<$core.String, $core.String>(7, _omitFieldNames ? '' : 'providerSymbols',
|
||||||
|
entryClassName: 'Instrument.ProviderSymbolsEntry',
|
||||||
|
keyFieldType: $pb.PbFieldType.OS,
|
||||||
|
valueFieldType: $pb.PbFieldType.OS,
|
||||||
|
packageName: const $pb.PackageName('alt.v1'))
|
||||||
|
..hasRequiredFields = false;
|
||||||
|
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
Instrument clone() => deepCopy();
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
Instrument copyWith(void Function(Instrument) updates) =>
|
||||||
|
super.copyWith((message) => updates(message as Instrument)) as Instrument;
|
||||||
|
|
||||||
|
@$core.override
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static Instrument create() => Instrument._();
|
||||||
|
@$core.override
|
||||||
|
Instrument createEmptyInstance() => create();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static Instrument getDefault() => _defaultInstance ??=
|
||||||
|
$pb.GeneratedMessage.$_defaultFor<Instrument>(create);
|
||||||
|
static Instrument? _defaultInstance;
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.String get id => $_getSZ(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set id($core.String value) => $_setString(0, value);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasId() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearId() => $_clearField(1);
|
||||||
|
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$0.Market get market => $_getN(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
set market($0.Market value) => $_setField(2, value);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$core.bool hasMarket() => $_has(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
void clearMarket() => $_clearField(2);
|
||||||
|
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
$0.Venue get venue => $_getN(2);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
set venue($0.Venue value) => $_setField(3, value);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
$core.bool hasVenue() => $_has(2);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
void clearVenue() => $_clearField(3);
|
||||||
|
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
$core.String get symbol => $_getSZ(3);
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
set symbol($core.String value) => $_setString(3, value);
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
$core.bool hasSymbol() => $_has(3);
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
void clearSymbol() => $_clearField(4);
|
||||||
|
|
||||||
|
@$pb.TagNumber(5)
|
||||||
|
$core.String get name => $_getSZ(4);
|
||||||
|
@$pb.TagNumber(5)
|
||||||
|
set name($core.String value) => $_setString(4, value);
|
||||||
|
@$pb.TagNumber(5)
|
||||||
|
$core.bool hasName() => $_has(4);
|
||||||
|
@$pb.TagNumber(5)
|
||||||
|
void clearName() => $_clearField(5);
|
||||||
|
|
||||||
|
@$pb.TagNumber(6)
|
||||||
|
$0.Currency get currency => $_getN(5);
|
||||||
|
@$pb.TagNumber(6)
|
||||||
|
set currency($0.Currency value) => $_setField(6, value);
|
||||||
|
@$pb.TagNumber(6)
|
||||||
|
$core.bool hasCurrency() => $_has(5);
|
||||||
|
@$pb.TagNumber(6)
|
||||||
|
void clearCurrency() => $_clearField(6);
|
||||||
|
|
||||||
|
@$pb.TagNumber(7)
|
||||||
|
$pb.PbMap<$core.String, $core.String> get providerSymbols => $_getMap(6);
|
||||||
|
}
|
||||||
|
|
||||||
|
class Price extends $pb.GeneratedMessage {
|
||||||
|
factory Price({
|
||||||
|
$0.Currency? currency,
|
||||||
|
$0.Decimal? amount,
|
||||||
|
}) {
|
||||||
|
final result = create();
|
||||||
|
if (currency != null) result.currency = currency;
|
||||||
|
if (amount != null) result.amount = amount;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
Price._();
|
||||||
|
|
||||||
|
factory Price.fromBuffer($core.List<$core.int> data,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromBuffer(data, registry);
|
||||||
|
factory Price.fromJson($core.String json,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromJson(json, registry);
|
||||||
|
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
|
||||||
|
_omitMessageNames ? '' : 'Price',
|
||||||
|
package: const $pb.PackageName(_omitMessageNames ? '' : 'alt.v1'),
|
||||||
|
createEmptyInstance: create)
|
||||||
|
..aE<$0.Currency>(1, _omitFieldNames ? '' : 'currency',
|
||||||
|
enumValues: $0.Currency.values)
|
||||||
|
..aOM<$0.Decimal>(2, _omitFieldNames ? '' : 'amount',
|
||||||
|
subBuilder: $0.Decimal.create)
|
||||||
|
..hasRequiredFields = false;
|
||||||
|
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
Price clone() => deepCopy();
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
Price copyWith(void Function(Price) updates) =>
|
||||||
|
super.copyWith((message) => updates(message as Price)) as Price;
|
||||||
|
|
||||||
|
@$core.override
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static Price create() => Price._();
|
||||||
|
@$core.override
|
||||||
|
Price createEmptyInstance() => create();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static Price getDefault() =>
|
||||||
|
_defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Price>(create);
|
||||||
|
static Price? _defaultInstance;
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$0.Currency get currency => $_getN(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set currency($0.Currency value) => $_setField(1, value);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasCurrency() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearCurrency() => $_clearField(1);
|
||||||
|
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$0.Decimal get amount => $_getN(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
set amount($0.Decimal value) => $_setField(2, value);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$core.bool hasAmount() => $_has(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
void clearAmount() => $_clearField(2);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$0.Decimal ensureAmount() => $_ensure(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
class Quantity extends $pb.GeneratedMessage {
|
||||||
|
factory Quantity({
|
||||||
|
$0.Decimal? amount,
|
||||||
|
}) {
|
||||||
|
final result = create();
|
||||||
|
if (amount != null) result.amount = amount;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
Quantity._();
|
||||||
|
|
||||||
|
factory Quantity.fromBuffer($core.List<$core.int> data,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromBuffer(data, registry);
|
||||||
|
factory Quantity.fromJson($core.String json,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromJson(json, registry);
|
||||||
|
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
|
||||||
|
_omitMessageNames ? '' : 'Quantity',
|
||||||
|
package: const $pb.PackageName(_omitMessageNames ? '' : 'alt.v1'),
|
||||||
|
createEmptyInstance: create)
|
||||||
|
..aOM<$0.Decimal>(1, _omitFieldNames ? '' : 'amount',
|
||||||
|
subBuilder: $0.Decimal.create)
|
||||||
|
..hasRequiredFields = false;
|
||||||
|
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
Quantity clone() => deepCopy();
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
Quantity copyWith(void Function(Quantity) updates) =>
|
||||||
|
super.copyWith((message) => updates(message as Quantity)) as Quantity;
|
||||||
|
|
||||||
|
@$core.override
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static Quantity create() => Quantity._();
|
||||||
|
@$core.override
|
||||||
|
Quantity createEmptyInstance() => create();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static Quantity getDefault() =>
|
||||||
|
_defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Quantity>(create);
|
||||||
|
static Quantity? _defaultInstance;
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$0.Decimal get amount => $_getN(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set amount($0.Decimal value) => $_setField(1, value);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasAmount() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearAmount() => $_clearField(1);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$0.Decimal ensureAmount() => $_ensure(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
class Bar extends $pb.GeneratedMessage {
|
||||||
|
factory Bar({
|
||||||
|
$core.String? instrumentId,
|
||||||
|
$0.Timeframe? timeframe,
|
||||||
|
$fixnum.Int64? timestampUnixMs,
|
||||||
|
Price? open,
|
||||||
|
Price? high,
|
||||||
|
Price? low,
|
||||||
|
Price? close,
|
||||||
|
Quantity? volume,
|
||||||
|
}) {
|
||||||
|
final result = create();
|
||||||
|
if (instrumentId != null) result.instrumentId = instrumentId;
|
||||||
|
if (timeframe != null) result.timeframe = timeframe;
|
||||||
|
if (timestampUnixMs != null) result.timestampUnixMs = timestampUnixMs;
|
||||||
|
if (open != null) result.open = open;
|
||||||
|
if (high != null) result.high = high;
|
||||||
|
if (low != null) result.low = low;
|
||||||
|
if (close != null) result.close = close;
|
||||||
|
if (volume != null) result.volume = volume;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
Bar._();
|
||||||
|
|
||||||
|
factory Bar.fromBuffer($core.List<$core.int> data,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromBuffer(data, registry);
|
||||||
|
factory Bar.fromJson($core.String json,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromJson(json, registry);
|
||||||
|
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
|
||||||
|
_omitMessageNames ? '' : 'Bar',
|
||||||
|
package: const $pb.PackageName(_omitMessageNames ? '' : 'alt.v1'),
|
||||||
|
createEmptyInstance: create)
|
||||||
|
..aOS(1, _omitFieldNames ? '' : 'instrumentId')
|
||||||
|
..aE<$0.Timeframe>(2, _omitFieldNames ? '' : 'timeframe',
|
||||||
|
enumValues: $0.Timeframe.values)
|
||||||
|
..aInt64(3, _omitFieldNames ? '' : 'timestampUnixMs')
|
||||||
|
..aOM<Price>(4, _omitFieldNames ? '' : 'open', subBuilder: Price.create)
|
||||||
|
..aOM<Price>(5, _omitFieldNames ? '' : 'high', subBuilder: Price.create)
|
||||||
|
..aOM<Price>(6, _omitFieldNames ? '' : 'low', subBuilder: Price.create)
|
||||||
|
..aOM<Price>(7, _omitFieldNames ? '' : 'close', subBuilder: Price.create)
|
||||||
|
..aOM<Quantity>(8, _omitFieldNames ? '' : 'volume',
|
||||||
|
subBuilder: Quantity.create)
|
||||||
|
..hasRequiredFields = false;
|
||||||
|
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
Bar clone() => deepCopy();
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
Bar copyWith(void Function(Bar) updates) =>
|
||||||
|
super.copyWith((message) => updates(message as Bar)) as Bar;
|
||||||
|
|
||||||
|
@$core.override
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static Bar create() => Bar._();
|
||||||
|
@$core.override
|
||||||
|
Bar createEmptyInstance() => create();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static Bar getDefault() =>
|
||||||
|
_defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Bar>(create);
|
||||||
|
static Bar? _defaultInstance;
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.String get instrumentId => $_getSZ(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set instrumentId($core.String value) => $_setString(0, value);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasInstrumentId() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearInstrumentId() => $_clearField(1);
|
||||||
|
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$0.Timeframe get timeframe => $_getN(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
set timeframe($0.Timeframe value) => $_setField(2, value);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$core.bool hasTimeframe() => $_has(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
void clearTimeframe() => $_clearField(2);
|
||||||
|
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
$fixnum.Int64 get timestampUnixMs => $_getI64(2);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
set timestampUnixMs($fixnum.Int64 value) => $_setInt64(2, value);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
$core.bool hasTimestampUnixMs() => $_has(2);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
void clearTimestampUnixMs() => $_clearField(3);
|
||||||
|
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
Price get open => $_getN(3);
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
set open(Price value) => $_setField(4, value);
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
$core.bool hasOpen() => $_has(3);
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
void clearOpen() => $_clearField(4);
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
Price ensureOpen() => $_ensure(3);
|
||||||
|
|
||||||
|
@$pb.TagNumber(5)
|
||||||
|
Price get high => $_getN(4);
|
||||||
|
@$pb.TagNumber(5)
|
||||||
|
set high(Price value) => $_setField(5, value);
|
||||||
|
@$pb.TagNumber(5)
|
||||||
|
$core.bool hasHigh() => $_has(4);
|
||||||
|
@$pb.TagNumber(5)
|
||||||
|
void clearHigh() => $_clearField(5);
|
||||||
|
@$pb.TagNumber(5)
|
||||||
|
Price ensureHigh() => $_ensure(4);
|
||||||
|
|
||||||
|
@$pb.TagNumber(6)
|
||||||
|
Price get low => $_getN(5);
|
||||||
|
@$pb.TagNumber(6)
|
||||||
|
set low(Price value) => $_setField(6, value);
|
||||||
|
@$pb.TagNumber(6)
|
||||||
|
$core.bool hasLow() => $_has(5);
|
||||||
|
@$pb.TagNumber(6)
|
||||||
|
void clearLow() => $_clearField(6);
|
||||||
|
@$pb.TagNumber(6)
|
||||||
|
Price ensureLow() => $_ensure(5);
|
||||||
|
|
||||||
|
@$pb.TagNumber(7)
|
||||||
|
Price get close => $_getN(6);
|
||||||
|
@$pb.TagNumber(7)
|
||||||
|
set close(Price value) => $_setField(7, value);
|
||||||
|
@$pb.TagNumber(7)
|
||||||
|
$core.bool hasClose() => $_has(6);
|
||||||
|
@$pb.TagNumber(7)
|
||||||
|
void clearClose() => $_clearField(7);
|
||||||
|
@$pb.TagNumber(7)
|
||||||
|
Price ensureClose() => $_ensure(6);
|
||||||
|
|
||||||
|
@$pb.TagNumber(8)
|
||||||
|
Quantity get volume => $_getN(7);
|
||||||
|
@$pb.TagNumber(8)
|
||||||
|
set volume(Quantity value) => $_setField(8, value);
|
||||||
|
@$pb.TagNumber(8)
|
||||||
|
$core.bool hasVolume() => $_has(7);
|
||||||
|
@$pb.TagNumber(8)
|
||||||
|
void clearVolume() => $_clearField(8);
|
||||||
|
@$pb.TagNumber(8)
|
||||||
|
Quantity ensureVolume() => $_ensure(7);
|
||||||
|
}
|
||||||
|
|
||||||
|
class ListInstrumentsRequest extends $pb.GeneratedMessage {
|
||||||
|
factory ListInstrumentsRequest({
|
||||||
|
$0.Market? market,
|
||||||
|
$core.String? provider,
|
||||||
|
}) {
|
||||||
|
final result = create();
|
||||||
|
if (market != null) result.market = market;
|
||||||
|
if (provider != null) result.provider = provider;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
ListInstrumentsRequest._();
|
||||||
|
|
||||||
|
factory ListInstrumentsRequest.fromBuffer($core.List<$core.int> data,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromBuffer(data, registry);
|
||||||
|
factory ListInstrumentsRequest.fromJson($core.String json,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromJson(json, registry);
|
||||||
|
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
|
||||||
|
_omitMessageNames ? '' : 'ListInstrumentsRequest',
|
||||||
|
package: const $pb.PackageName(_omitMessageNames ? '' : 'alt.v1'),
|
||||||
|
createEmptyInstance: create)
|
||||||
|
..aE<$0.Market>(1, _omitFieldNames ? '' : 'market',
|
||||||
|
enumValues: $0.Market.values)
|
||||||
|
..aOS(2, _omitFieldNames ? '' : 'provider')
|
||||||
|
..hasRequiredFields = false;
|
||||||
|
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
ListInstrumentsRequest clone() => deepCopy();
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
ListInstrumentsRequest copyWith(
|
||||||
|
void Function(ListInstrumentsRequest) updates) =>
|
||||||
|
super.copyWith((message) => updates(message as ListInstrumentsRequest))
|
||||||
|
as ListInstrumentsRequest;
|
||||||
|
|
||||||
|
@$core.override
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static ListInstrumentsRequest create() => ListInstrumentsRequest._();
|
||||||
|
@$core.override
|
||||||
|
ListInstrumentsRequest createEmptyInstance() => create();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static ListInstrumentsRequest getDefault() => _defaultInstance ??=
|
||||||
|
$pb.GeneratedMessage.$_defaultFor<ListInstrumentsRequest>(create);
|
||||||
|
static ListInstrumentsRequest? _defaultInstance;
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$0.Market get market => $_getN(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set market($0.Market value) => $_setField(1, value);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasMarket() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearMarket() => $_clearField(1);
|
||||||
|
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$core.String get provider => $_getSZ(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
set provider($core.String value) => $_setString(1, value);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$core.bool hasProvider() => $_has(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
void clearProvider() => $_clearField(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
class ListInstrumentsResponse extends $pb.GeneratedMessage {
|
||||||
|
factory ListInstrumentsResponse({
|
||||||
|
$core.Iterable<Instrument>? instruments,
|
||||||
|
}) {
|
||||||
|
final result = create();
|
||||||
|
if (instruments != null) result.instruments.addAll(instruments);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
ListInstrumentsResponse._();
|
||||||
|
|
||||||
|
factory ListInstrumentsResponse.fromBuffer($core.List<$core.int> data,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromBuffer(data, registry);
|
||||||
|
factory ListInstrumentsResponse.fromJson($core.String json,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromJson(json, registry);
|
||||||
|
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
|
||||||
|
_omitMessageNames ? '' : 'ListInstrumentsResponse',
|
||||||
|
package: const $pb.PackageName(_omitMessageNames ? '' : 'alt.v1'),
|
||||||
|
createEmptyInstance: create)
|
||||||
|
..pPM<Instrument>(1, _omitFieldNames ? '' : 'instruments',
|
||||||
|
subBuilder: Instrument.create)
|
||||||
|
..hasRequiredFields = false;
|
||||||
|
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
ListInstrumentsResponse clone() => deepCopy();
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
ListInstrumentsResponse copyWith(
|
||||||
|
void Function(ListInstrumentsResponse) updates) =>
|
||||||
|
super.copyWith((message) => updates(message as ListInstrumentsResponse))
|
||||||
|
as ListInstrumentsResponse;
|
||||||
|
|
||||||
|
@$core.override
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static ListInstrumentsResponse create() => ListInstrumentsResponse._();
|
||||||
|
@$core.override
|
||||||
|
ListInstrumentsResponse createEmptyInstance() => create();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static ListInstrumentsResponse getDefault() => _defaultInstance ??=
|
||||||
|
$pb.GeneratedMessage.$_defaultFor<ListInstrumentsResponse>(create);
|
||||||
|
static ListInstrumentsResponse? _defaultInstance;
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$pb.PbList<Instrument> get instruments => $_getList(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
class ListBarsRequest extends $pb.GeneratedMessage {
|
||||||
|
factory ListBarsRequest({
|
||||||
|
$core.String? instrumentId,
|
||||||
|
$0.Timeframe? timeframe,
|
||||||
|
$fixnum.Int64? fromUnixMs,
|
||||||
|
$fixnum.Int64? toUnixMs,
|
||||||
|
}) {
|
||||||
|
final result = create();
|
||||||
|
if (instrumentId != null) result.instrumentId = instrumentId;
|
||||||
|
if (timeframe != null) result.timeframe = timeframe;
|
||||||
|
if (fromUnixMs != null) result.fromUnixMs = fromUnixMs;
|
||||||
|
if (toUnixMs != null) result.toUnixMs = toUnixMs;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
ListBarsRequest._();
|
||||||
|
|
||||||
|
factory ListBarsRequest.fromBuffer($core.List<$core.int> data,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromBuffer(data, registry);
|
||||||
|
factory ListBarsRequest.fromJson($core.String json,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromJson(json, registry);
|
||||||
|
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
|
||||||
|
_omitMessageNames ? '' : 'ListBarsRequest',
|
||||||
|
package: const $pb.PackageName(_omitMessageNames ? '' : 'alt.v1'),
|
||||||
|
createEmptyInstance: create)
|
||||||
|
..aOS(1, _omitFieldNames ? '' : 'instrumentId')
|
||||||
|
..aE<$0.Timeframe>(2, _omitFieldNames ? '' : 'timeframe',
|
||||||
|
enumValues: $0.Timeframe.values)
|
||||||
|
..aInt64(3, _omitFieldNames ? '' : 'fromUnixMs')
|
||||||
|
..aInt64(4, _omitFieldNames ? '' : 'toUnixMs')
|
||||||
|
..hasRequiredFields = false;
|
||||||
|
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
ListBarsRequest clone() => deepCopy();
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
ListBarsRequest copyWith(void Function(ListBarsRequest) updates) =>
|
||||||
|
super.copyWith((message) => updates(message as ListBarsRequest))
|
||||||
|
as ListBarsRequest;
|
||||||
|
|
||||||
|
@$core.override
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static ListBarsRequest create() => ListBarsRequest._();
|
||||||
|
@$core.override
|
||||||
|
ListBarsRequest createEmptyInstance() => create();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static ListBarsRequest getDefault() => _defaultInstance ??=
|
||||||
|
$pb.GeneratedMessage.$_defaultFor<ListBarsRequest>(create);
|
||||||
|
static ListBarsRequest? _defaultInstance;
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.String get instrumentId => $_getSZ(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set instrumentId($core.String value) => $_setString(0, value);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasInstrumentId() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearInstrumentId() => $_clearField(1);
|
||||||
|
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$0.Timeframe get timeframe => $_getN(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
set timeframe($0.Timeframe value) => $_setField(2, value);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$core.bool hasTimeframe() => $_has(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
void clearTimeframe() => $_clearField(2);
|
||||||
|
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
$fixnum.Int64 get fromUnixMs => $_getI64(2);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
set fromUnixMs($fixnum.Int64 value) => $_setInt64(2, value);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
$core.bool hasFromUnixMs() => $_has(2);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
void clearFromUnixMs() => $_clearField(3);
|
||||||
|
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
$fixnum.Int64 get toUnixMs => $_getI64(3);
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
set toUnixMs($fixnum.Int64 value) => $_setInt64(3, value);
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
$core.bool hasToUnixMs() => $_has(3);
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
void clearToUnixMs() => $_clearField(4);
|
||||||
|
}
|
||||||
|
|
||||||
|
class ListBarsResponse extends $pb.GeneratedMessage {
|
||||||
|
factory ListBarsResponse({
|
||||||
|
$core.Iterable<Bar>? bars,
|
||||||
|
}) {
|
||||||
|
final result = create();
|
||||||
|
if (bars != null) result.bars.addAll(bars);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
ListBarsResponse._();
|
||||||
|
|
||||||
|
factory ListBarsResponse.fromBuffer($core.List<$core.int> data,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromBuffer(data, registry);
|
||||||
|
factory ListBarsResponse.fromJson($core.String json,
|
||||||
|
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
|
||||||
|
create()..mergeFromJson(json, registry);
|
||||||
|
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
|
||||||
|
_omitMessageNames ? '' : 'ListBarsResponse',
|
||||||
|
package: const $pb.PackageName(_omitMessageNames ? '' : 'alt.v1'),
|
||||||
|
createEmptyInstance: create)
|
||||||
|
..pPM<Bar>(1, _omitFieldNames ? '' : 'bars', subBuilder: Bar.create)
|
||||||
|
..hasRequiredFields = false;
|
||||||
|
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
ListBarsResponse clone() => deepCopy();
|
||||||
|
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
|
||||||
|
ListBarsResponse copyWith(void Function(ListBarsResponse) updates) =>
|
||||||
|
super.copyWith((message) => updates(message as ListBarsResponse))
|
||||||
|
as ListBarsResponse;
|
||||||
|
|
||||||
|
@$core.override
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static ListBarsResponse create() => ListBarsResponse._();
|
||||||
|
@$core.override
|
||||||
|
ListBarsResponse createEmptyInstance() => create();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static ListBarsResponse getDefault() => _defaultInstance ??=
|
||||||
|
$pb.GeneratedMessage.$_defaultFor<ListBarsResponse>(create);
|
||||||
|
static ListBarsResponse? _defaultInstance;
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$pb.PbList<Bar> get bars => $_getList(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
const $core.bool _omitFieldNames =
|
||||||
|
$core.bool.fromEnvironment('protobuf.omit_field_names');
|
||||||
|
const $core.bool _omitMessageNames =
|
||||||
|
$core.bool.fromEnvironment('protobuf.omit_message_names');
|
||||||
11
apps/client/lib/src/generated/alt/v1/market.pbenum.dart
Normal file
11
apps/client/lib/src/generated/alt/v1/market.pbenum.dart
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
// This is a generated file - do not edit.
|
||||||
|
//
|
||||||
|
// Generated from alt/v1/market.proto.
|
||||||
|
|
||||||
|
// @dart = 3.3
|
||||||
|
|
||||||
|
// ignore_for_file: annotate_overrides, camel_case_types, comment_references
|
||||||
|
// ignore_for_file: constant_identifier_names
|
||||||
|
// ignore_for_file: curly_braces_in_flow_control_structures
|
||||||
|
// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes
|
||||||
|
// ignore_for_file: non_constant_identifier_names, prefer_relative_imports
|
||||||
251
apps/client/lib/src/generated/alt/v1/market.pbjson.dart
Normal file
251
apps/client/lib/src/generated/alt/v1/market.pbjson.dart
Normal file
|
|
@ -0,0 +1,251 @@
|
||||||
|
// This is a generated file - do not edit.
|
||||||
|
//
|
||||||
|
// Generated from alt/v1/market.proto.
|
||||||
|
|
||||||
|
// @dart = 3.3
|
||||||
|
|
||||||
|
// ignore_for_file: annotate_overrides, camel_case_types, comment_references
|
||||||
|
// ignore_for_file: constant_identifier_names
|
||||||
|
// ignore_for_file: curly_braces_in_flow_control_structures
|
||||||
|
// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes
|
||||||
|
// ignore_for_file: non_constant_identifier_names, prefer_relative_imports
|
||||||
|
// ignore_for_file: unused_import
|
||||||
|
|
||||||
|
import 'dart:convert' as $convert;
|
||||||
|
import 'dart:core' as $core;
|
||||||
|
import 'dart:typed_data' as $typed_data;
|
||||||
|
|
||||||
|
@$core.Deprecated('Use instrumentDescriptor instead')
|
||||||
|
const Instrument$json = {
|
||||||
|
'1': 'Instrument',
|
||||||
|
'2': [
|
||||||
|
{'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'},
|
||||||
|
{
|
||||||
|
'1': 'market',
|
||||||
|
'3': 2,
|
||||||
|
'4': 1,
|
||||||
|
'5': 14,
|
||||||
|
'6': '.alt.v1.Market',
|
||||||
|
'10': 'market'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'1': 'venue',
|
||||||
|
'3': 3,
|
||||||
|
'4': 1,
|
||||||
|
'5': 14,
|
||||||
|
'6': '.alt.v1.Venue',
|
||||||
|
'10': 'venue'
|
||||||
|
},
|
||||||
|
{'1': 'symbol', '3': 4, '4': 1, '5': 9, '10': 'symbol'},
|
||||||
|
{'1': 'name', '3': 5, '4': 1, '5': 9, '10': 'name'},
|
||||||
|
{
|
||||||
|
'1': 'currency',
|
||||||
|
'3': 6,
|
||||||
|
'4': 1,
|
||||||
|
'5': 14,
|
||||||
|
'6': '.alt.v1.Currency',
|
||||||
|
'10': 'currency'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'1': 'provider_symbols',
|
||||||
|
'3': 7,
|
||||||
|
'4': 3,
|
||||||
|
'5': 11,
|
||||||
|
'6': '.alt.v1.Instrument.ProviderSymbolsEntry',
|
||||||
|
'10': 'providerSymbols'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
'3': [Instrument_ProviderSymbolsEntry$json],
|
||||||
|
};
|
||||||
|
|
||||||
|
@$core.Deprecated('Use instrumentDescriptor instead')
|
||||||
|
const Instrument_ProviderSymbolsEntry$json = {
|
||||||
|
'1': 'ProviderSymbolsEntry',
|
||||||
|
'2': [
|
||||||
|
{'1': 'key', '3': 1, '4': 1, '5': 9, '10': 'key'},
|
||||||
|
{'1': 'value', '3': 2, '4': 1, '5': 9, '10': 'value'},
|
||||||
|
],
|
||||||
|
'7': {'7': true},
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `Instrument`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List instrumentDescriptor = $convert.base64Decode(
|
||||||
|
'CgpJbnN0cnVtZW50Eg4KAmlkGAEgASgJUgJpZBImCgZtYXJrZXQYAiABKA4yDi5hbHQudjEuTW'
|
||||||
|
'Fya2V0UgZtYXJrZXQSIwoFdmVudWUYAyABKA4yDS5hbHQudjEuVmVudWVSBXZlbnVlEhYKBnN5'
|
||||||
|
'bWJvbBgEIAEoCVIGc3ltYm9sEhIKBG5hbWUYBSABKAlSBG5hbWUSLAoIY3VycmVuY3kYBiABKA'
|
||||||
|
'4yEC5hbHQudjEuQ3VycmVuY3lSCGN1cnJlbmN5ElIKEHByb3ZpZGVyX3N5bWJvbHMYByADKAsy'
|
||||||
|
'Jy5hbHQudjEuSW5zdHJ1bWVudC5Qcm92aWRlclN5bWJvbHNFbnRyeVIPcHJvdmlkZXJTeW1ib2'
|
||||||
|
'xzGkIKFFByb3ZpZGVyU3ltYm9sc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIg'
|
||||||
|
'ASgJUgV2YWx1ZToCOAE=');
|
||||||
|
|
||||||
|
@$core.Deprecated('Use priceDescriptor instead')
|
||||||
|
const Price$json = {
|
||||||
|
'1': 'Price',
|
||||||
|
'2': [
|
||||||
|
{
|
||||||
|
'1': 'currency',
|
||||||
|
'3': 1,
|
||||||
|
'4': 1,
|
||||||
|
'5': 14,
|
||||||
|
'6': '.alt.v1.Currency',
|
||||||
|
'10': 'currency'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'1': 'amount',
|
||||||
|
'3': 2,
|
||||||
|
'4': 1,
|
||||||
|
'5': 11,
|
||||||
|
'6': '.alt.v1.Decimal',
|
||||||
|
'10': 'amount'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `Price`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List priceDescriptor = $convert.base64Decode(
|
||||||
|
'CgVQcmljZRIsCghjdXJyZW5jeRgBIAEoDjIQLmFsdC52MS5DdXJyZW5jeVIIY3VycmVuY3kSJw'
|
||||||
|
'oGYW1vdW50GAIgASgLMg8uYWx0LnYxLkRlY2ltYWxSBmFtb3VudA==');
|
||||||
|
|
||||||
|
@$core.Deprecated('Use quantityDescriptor instead')
|
||||||
|
const Quantity$json = {
|
||||||
|
'1': 'Quantity',
|
||||||
|
'2': [
|
||||||
|
{
|
||||||
|
'1': 'amount',
|
||||||
|
'3': 1,
|
||||||
|
'4': 1,
|
||||||
|
'5': 11,
|
||||||
|
'6': '.alt.v1.Decimal',
|
||||||
|
'10': 'amount'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `Quantity`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List quantityDescriptor = $convert.base64Decode(
|
||||||
|
'CghRdWFudGl0eRInCgZhbW91bnQYASABKAsyDy5hbHQudjEuRGVjaW1hbFIGYW1vdW50');
|
||||||
|
|
||||||
|
@$core.Deprecated('Use barDescriptor instead')
|
||||||
|
const Bar$json = {
|
||||||
|
'1': 'Bar',
|
||||||
|
'2': [
|
||||||
|
{'1': 'instrument_id', '3': 1, '4': 1, '5': 9, '10': 'instrumentId'},
|
||||||
|
{
|
||||||
|
'1': 'timeframe',
|
||||||
|
'3': 2,
|
||||||
|
'4': 1,
|
||||||
|
'5': 14,
|
||||||
|
'6': '.alt.v1.Timeframe',
|
||||||
|
'10': 'timeframe'
|
||||||
|
},
|
||||||
|
{'1': 'timestamp_unix_ms', '3': 3, '4': 1, '5': 3, '10': 'timestampUnixMs'},
|
||||||
|
{'1': 'open', '3': 4, '4': 1, '5': 11, '6': '.alt.v1.Price', '10': 'open'},
|
||||||
|
{'1': 'high', '3': 5, '4': 1, '5': 11, '6': '.alt.v1.Price', '10': 'high'},
|
||||||
|
{'1': 'low', '3': 6, '4': 1, '5': 11, '6': '.alt.v1.Price', '10': 'low'},
|
||||||
|
{
|
||||||
|
'1': 'close',
|
||||||
|
'3': 7,
|
||||||
|
'4': 1,
|
||||||
|
'5': 11,
|
||||||
|
'6': '.alt.v1.Price',
|
||||||
|
'10': 'close'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'1': 'volume',
|
||||||
|
'3': 8,
|
||||||
|
'4': 1,
|
||||||
|
'5': 11,
|
||||||
|
'6': '.alt.v1.Quantity',
|
||||||
|
'10': 'volume'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `Bar`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List barDescriptor = $convert.base64Decode(
|
||||||
|
'CgNCYXISIwoNaW5zdHJ1bWVudF9pZBgBIAEoCVIMaW5zdHJ1bWVudElkEi8KCXRpbWVmcmFtZR'
|
||||||
|
'gCIAEoDjIRLmFsdC52MS5UaW1lZnJhbWVSCXRpbWVmcmFtZRIqChF0aW1lc3RhbXBfdW5peF9t'
|
||||||
|
'cxgDIAEoA1IPdGltZXN0YW1wVW5peE1zEiEKBG9wZW4YBCABKAsyDS5hbHQudjEuUHJpY2VSBG'
|
||||||
|
'9wZW4SIQoEaGlnaBgFIAEoCzINLmFsdC52MS5QcmljZVIEaGlnaBIfCgNsb3cYBiABKAsyDS5h'
|
||||||
|
'bHQudjEuUHJpY2VSA2xvdxIjCgVjbG9zZRgHIAEoCzINLmFsdC52MS5QcmljZVIFY2xvc2USKA'
|
||||||
|
'oGdm9sdW1lGAggASgLMhAuYWx0LnYxLlF1YW50aXR5UgZ2b2x1bWU=');
|
||||||
|
|
||||||
|
@$core.Deprecated('Use listInstrumentsRequestDescriptor instead')
|
||||||
|
const ListInstrumentsRequest$json = {
|
||||||
|
'1': 'ListInstrumentsRequest',
|
||||||
|
'2': [
|
||||||
|
{
|
||||||
|
'1': 'market',
|
||||||
|
'3': 1,
|
||||||
|
'4': 1,
|
||||||
|
'5': 14,
|
||||||
|
'6': '.alt.v1.Market',
|
||||||
|
'10': 'market'
|
||||||
|
},
|
||||||
|
{'1': 'provider', '3': 2, '4': 1, '5': 9, '10': 'provider'},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `ListInstrumentsRequest`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List listInstrumentsRequestDescriptor =
|
||||||
|
$convert.base64Decode(
|
||||||
|
'ChZMaXN0SW5zdHJ1bWVudHNSZXF1ZXN0EiYKBm1hcmtldBgBIAEoDjIOLmFsdC52MS5NYXJrZX'
|
||||||
|
'RSBm1hcmtldBIaCghwcm92aWRlchgCIAEoCVIIcHJvdmlkZXI=');
|
||||||
|
|
||||||
|
@$core.Deprecated('Use listInstrumentsResponseDescriptor instead')
|
||||||
|
const ListInstrumentsResponse$json = {
|
||||||
|
'1': 'ListInstrumentsResponse',
|
||||||
|
'2': [
|
||||||
|
{
|
||||||
|
'1': 'instruments',
|
||||||
|
'3': 1,
|
||||||
|
'4': 3,
|
||||||
|
'5': 11,
|
||||||
|
'6': '.alt.v1.Instrument',
|
||||||
|
'10': 'instruments'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `ListInstrumentsResponse`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List listInstrumentsResponseDescriptor =
|
||||||
|
$convert.base64Decode(
|
||||||
|
'ChdMaXN0SW5zdHJ1bWVudHNSZXNwb25zZRI0CgtpbnN0cnVtZW50cxgBIAMoCzISLmFsdC52MS'
|
||||||
|
'5JbnN0cnVtZW50UgtpbnN0cnVtZW50cw==');
|
||||||
|
|
||||||
|
@$core.Deprecated('Use listBarsRequestDescriptor instead')
|
||||||
|
const ListBarsRequest$json = {
|
||||||
|
'1': 'ListBarsRequest',
|
||||||
|
'2': [
|
||||||
|
{'1': 'instrument_id', '3': 1, '4': 1, '5': 9, '10': 'instrumentId'},
|
||||||
|
{
|
||||||
|
'1': 'timeframe',
|
||||||
|
'3': 2,
|
||||||
|
'4': 1,
|
||||||
|
'5': 14,
|
||||||
|
'6': '.alt.v1.Timeframe',
|
||||||
|
'10': 'timeframe'
|
||||||
|
},
|
||||||
|
{'1': 'from_unix_ms', '3': 3, '4': 1, '5': 3, '10': 'fromUnixMs'},
|
||||||
|
{'1': 'to_unix_ms', '3': 4, '4': 1, '5': 3, '10': 'toUnixMs'},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `ListBarsRequest`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List listBarsRequestDescriptor = $convert.base64Decode(
|
||||||
|
'Cg9MaXN0QmFyc1JlcXVlc3QSIwoNaW5zdHJ1bWVudF9pZBgBIAEoCVIMaW5zdHJ1bWVudElkEi'
|
||||||
|
'8KCXRpbWVmcmFtZRgCIAEoDjIRLmFsdC52MS5UaW1lZnJhbWVSCXRpbWVmcmFtZRIgCgxmcm9t'
|
||||||
|
'X3VuaXhfbXMYAyABKANSCmZyb21Vbml4TXMSHAoKdG9fdW5peF9tcxgEIAEoA1IIdG9Vbml4TX'
|
||||||
|
'M=');
|
||||||
|
|
||||||
|
@$core.Deprecated('Use listBarsResponseDescriptor instead')
|
||||||
|
const ListBarsResponse$json = {
|
||||||
|
'1': 'ListBarsResponse',
|
||||||
|
'2': [
|
||||||
|
{'1': 'bars', '3': 1, '4': 3, '5': 11, '6': '.alt.v1.Bar', '10': 'bars'},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `ListBarsResponse`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List listBarsResponseDescriptor = $convert.base64Decode(
|
||||||
|
'ChBMaXN0QmFyc1Jlc3BvbnNlEh8KBGJhcnMYASADKAsyCy5hbHQudjEuQmFyUgRiYXJz');
|
||||||
|
|
@ -105,6 +105,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.9"
|
version: "1.0.9"
|
||||||
|
dart_style:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: dart_style
|
||||||
|
sha256: "29f7ecc274a86d32920b1d9cfc7502fa87220da41ec60b55f329559d5732e2b2"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.1.7"
|
||||||
fake_async:
|
fake_async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -122,7 +130,7 @@ packages:
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.0.1"
|
version: "7.0.1"
|
||||||
fixnum:
|
fixnum:
|
||||||
dependency: transitive
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: fixnum
|
name: fixnum
|
||||||
sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be
|
sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be
|
||||||
|
|
@ -320,6 +328,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.0.0"
|
version: "6.0.0"
|
||||||
|
protoc_plugin:
|
||||||
|
dependency: "direct dev"
|
||||||
|
description:
|
||||||
|
name: protoc_plugin
|
||||||
|
sha256: d1ea363e9118f954d9d482c2f7281c5ff5149b059e68672d1faa564d49091f05
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "25.0.0"
|
||||||
pub_semver:
|
pub_semver:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ dependencies:
|
||||||
flutter_riverpod: ^3.3.1
|
flutter_riverpod: ^3.3.1
|
||||||
go_router: ^17.2.3
|
go_router: ^17.2.3
|
||||||
protobuf: ^6.0.0
|
protobuf: ^6.0.0
|
||||||
|
fixnum: ^1.1.1
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
|
@ -48,6 +49,7 @@ dev_dependencies:
|
||||||
# package. See that file for information about deactivating specific lint
|
# package. See that file for information about deactivating specific lint
|
||||||
# rules and activating additional ones.
|
# rules and activating additional ones.
|
||||||
flutter_lints: ^6.0.0
|
flutter_lints: ^6.0.0
|
||||||
|
protoc_plugin: ^25.0.0
|
||||||
|
|
||||||
# For information on the generic Dart part of this file, see the
|
# For information on the generic Dart part of this file, see the
|
||||||
# following page: https://dart.dev/tools/pub/pubspec
|
# following page: https://dart.dev/tools/pub/pubspec
|
||||||
|
|
|
||||||
6
apps/client/tool/protoc-gen-dart
Executable file
6
apps/client/tool/protoc-gen-dart
Executable file
|
|
@ -0,0 +1,6 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
client_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
|
cd "$client_root"
|
||||||
|
exec dart run protoc_plugin "$@"
|
||||||
41
bin/contracts-check
Executable file
41
bin/contracts-check
Executable file
|
|
@ -0,0 +1,41 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
|
go_out="$root/packages/contracts/gen/go"
|
||||||
|
dart_out="$root/apps/client/lib/src/generated"
|
||||||
|
|
||||||
|
snapshot_dir="$(mktemp -d)"
|
||||||
|
trap 'rm -rf "$snapshot_dir"' EXIT
|
||||||
|
|
||||||
|
snapshot_go="$snapshot_dir/go"
|
||||||
|
snapshot_dart="$snapshot_dir/dart"
|
||||||
|
mkdir -p "$snapshot_go" "$snapshot_dart"
|
||||||
|
|
||||||
|
if [ -d "$go_out" ]; then
|
||||||
|
cp -R "$go_out/." "$snapshot_go/"
|
||||||
|
fi
|
||||||
|
if [ -d "$dart_out" ]; then
|
||||||
|
cp -R "$dart_out/." "$snapshot_dart/"
|
||||||
|
fi
|
||||||
|
|
||||||
|
"$root/bin/contracts-gen"
|
||||||
|
|
||||||
|
drift=0
|
||||||
|
|
||||||
|
if ! diff -ru "$snapshot_go" "$go_out" >/dev/null; then
|
||||||
|
echo "contracts-check: Go generated output drift detected under $go_out" >&2
|
||||||
|
diff -ru "$snapshot_go" "$go_out" >&2 || true
|
||||||
|
drift=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! diff -ru "$snapshot_dart" "$dart_out" >/dev/null; then
|
||||||
|
echo "contracts-check: Dart generated output drift detected under $dart_out" >&2
|
||||||
|
diff -ru "$snapshot_dart" "$dart_out" >&2 || true
|
||||||
|
drift=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$drift" -ne 0 ]; then
|
||||||
|
echo "contracts-check: run bin/contracts-gen and commit the regenerated output" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
50
bin/contracts-gen
Executable file
50
bin/contracts-gen
Executable file
|
|
@ -0,0 +1,50 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
|
proto_root="$root/packages/contracts/proto"
|
||||||
|
go_out="$root/packages/contracts/gen/go"
|
||||||
|
dart_out="$root/apps/client/lib/src/generated"
|
||||||
|
dart_plugin="$root/apps/client/tool/protoc-gen-dart"
|
||||||
|
|
||||||
|
require_cmd() {
|
||||||
|
if ! command -v "$1" >/dev/null 2>&1; then
|
||||||
|
echo "contracts-gen: required command not found: $1" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
require_cmd protoc
|
||||||
|
require_cmd protoc-gen-go
|
||||||
|
|
||||||
|
if [ ! -x "$dart_plugin" ]; then
|
||||||
|
echo "contracts-gen: dart protoc plugin wrapper missing or not executable: $dart_plugin" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
protos=(
|
||||||
|
"alt/v1/common.proto"
|
||||||
|
"alt/v1/market.proto"
|
||||||
|
"alt/v1/backtest.proto"
|
||||||
|
)
|
||||||
|
|
||||||
|
mkdir -p "$go_out"
|
||||||
|
mkdir -p "$dart_out"
|
||||||
|
|
||||||
|
(
|
||||||
|
cd "$proto_root"
|
||||||
|
protoc \
|
||||||
|
-I . \
|
||||||
|
--go_out="$go_out" \
|
||||||
|
--go_opt=paths=source_relative \
|
||||||
|
"${protos[@]}"
|
||||||
|
)
|
||||||
|
|
||||||
|
(
|
||||||
|
cd "$proto_root"
|
||||||
|
protoc \
|
||||||
|
-I . \
|
||||||
|
--plugin=protoc-gen-dart="$dart_plugin" \
|
||||||
|
--dart_out="$dart_out" \
|
||||||
|
"${protos[@]}"
|
||||||
|
)
|
||||||
1
bin/lint
1
bin/lint
|
|
@ -4,6 +4,7 @@ set -euo pipefail
|
||||||
root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
|
|
||||||
for module in \
|
for module in \
|
||||||
|
"$root/packages/contracts/gen/go" \
|
||||||
"$root/packages/domain" \
|
"$root/packages/domain" \
|
||||||
"$root/services/api" \
|
"$root/services/api" \
|
||||||
"$root/services/worker" \
|
"$root/services/worker" \
|
||||||
|
|
|
||||||
3
bin/test
3
bin/test
|
|
@ -3,7 +3,10 @@ set -euo pipefail
|
||||||
|
|
||||||
root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
|
|
||||||
|
"$root/bin/contracts-check"
|
||||||
|
|
||||||
for module in \
|
for module in \
|
||||||
|
"$root/packages/contracts/gen/go" \
|
||||||
"$root/packages/domain" \
|
"$root/packages/domain" \
|
||||||
"$root/services/api" \
|
"$root/services/api" \
|
||||||
"$root/services/worker" \
|
"$root/services/worker" \
|
||||||
|
|
|
||||||
1
go.work
1
go.work
|
|
@ -3,6 +3,7 @@ go 1.22
|
||||||
use (
|
use (
|
||||||
../proto-socket/go
|
../proto-socket/go
|
||||||
./apps/cli
|
./apps/cli
|
||||||
|
./packages/contracts/gen/go
|
||||||
./packages/domain
|
./packages/domain
|
||||||
./services/api
|
./services/api
|
||||||
./services/worker
|
./services/worker
|
||||||
|
|
|
||||||
1
go.work.sum
Normal file
1
go.work.sum
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||||
|
|
@ -8,5 +8,31 @@ Initial contract direction:
|
||||||
|
|
||||||
- additive protobuf changes first
|
- additive protobuf changes first
|
||||||
- explicit handshake/version messages because proto-socket protocol `0.1` does not carry an application version field
|
- explicit handshake/version messages because proto-socket protocol `0.1` does not carry an application version field
|
||||||
- market-neutral models with Korea market daily bars as the MVP path
|
- market-neutral models with Korea market daily bars as the MVP path (including `ListBarsRequest`/`ListBarsResponse` and `GetBacktestResultRequest`/`GetBacktestResultResponse` for the MVP schema)
|
||||||
- generated clients should be derived from `proto/` sources, not edited by hand
|
- generated clients should be derived from `proto/` sources, not edited by hand
|
||||||
|
|
||||||
|
## Compatibility
|
||||||
|
|
||||||
|
- Prefer additive fields and messages.
|
||||||
|
- Never renumber existing fields.
|
||||||
|
- Reserve removals or semantic rewrites for an explicit version bump.
|
||||||
|
|
||||||
|
## Transport Boundary
|
||||||
|
|
||||||
|
- `proto-socket` owns `PacketBase`, heartbeat, nonce, and transport framing.
|
||||||
|
- ALT `alt.v1` messages are application payloads carried in `PacketBase.data`.
|
||||||
|
|
||||||
|
## Codegen
|
||||||
|
|
||||||
|
Generated outputs are committed source-of-derivation artifacts:
|
||||||
|
|
||||||
|
- Go: `packages/contracts/gen/go/alt/v1/*.pb.go` (Go module `git.toki-labs.com/toki/alt/packages/contracts/gen/go`).
|
||||||
|
- Dart: `apps/client/lib/src/generated/alt/v1/*.pb*.dart`.
|
||||||
|
|
||||||
|
Commands (run from repository root):
|
||||||
|
|
||||||
|
- `bin/contracts-gen` regenerates Go and Dart outputs from `proto/`. Requires `protoc`, `protoc-gen-go`, and a working `apps/client` Flutter package (the Dart plugin is invoked via `apps/client/tool/protoc-gen-dart`).
|
||||||
|
- `bin/contracts-check` snapshots current generated outputs, regenerates, and fails when the regeneration produces a diff. Used by `bin/test` to keep schema and generated code aligned.
|
||||||
|
|
||||||
|
Do not hand-edit files under `packages/contracts/gen/` or `apps/client/lib/src/generated/`.
|
||||||
|
|
||||||
|
|
|
||||||
674
packages/contracts/gen/go/alt/v1/backtest.pb.go
Normal file
674
packages/contracts/gen/go/alt/v1/backtest.pb.go
Normal file
|
|
@ -0,0 +1,674 @@
|
||||||
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
|
// versions:
|
||||||
|
// protoc-gen-go v1.36.11
|
||||||
|
// protoc v5.29.3
|
||||||
|
// source: alt/v1/backtest.proto
|
||||||
|
|
||||||
|
package altv1
|
||||||
|
|
||||||
|
import (
|
||||||
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||||
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||||
|
reflect "reflect"
|
||||||
|
sync "sync"
|
||||||
|
unsafe "unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Verify that this generated code is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||||
|
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||||
|
)
|
||||||
|
|
||||||
|
type BacktestRunStatus int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
BacktestRunStatus_BACKTEST_RUN_STATUS_UNSPECIFIED BacktestRunStatus = 0
|
||||||
|
BacktestRunStatus_BACKTEST_RUN_STATUS_PENDING BacktestRunStatus = 1
|
||||||
|
BacktestRunStatus_BACKTEST_RUN_STATUS_RUNNING BacktestRunStatus = 2
|
||||||
|
BacktestRunStatus_BACKTEST_RUN_STATUS_SUCCEEDED BacktestRunStatus = 3
|
||||||
|
BacktestRunStatus_BACKTEST_RUN_STATUS_FAILED BacktestRunStatus = 4
|
||||||
|
BacktestRunStatus_BACKTEST_RUN_STATUS_CANCELED BacktestRunStatus = 5
|
||||||
|
)
|
||||||
|
|
||||||
|
// Enum value maps for BacktestRunStatus.
|
||||||
|
var (
|
||||||
|
BacktestRunStatus_name = map[int32]string{
|
||||||
|
0: "BACKTEST_RUN_STATUS_UNSPECIFIED",
|
||||||
|
1: "BACKTEST_RUN_STATUS_PENDING",
|
||||||
|
2: "BACKTEST_RUN_STATUS_RUNNING",
|
||||||
|
3: "BACKTEST_RUN_STATUS_SUCCEEDED",
|
||||||
|
4: "BACKTEST_RUN_STATUS_FAILED",
|
||||||
|
5: "BACKTEST_RUN_STATUS_CANCELED",
|
||||||
|
}
|
||||||
|
BacktestRunStatus_value = map[string]int32{
|
||||||
|
"BACKTEST_RUN_STATUS_UNSPECIFIED": 0,
|
||||||
|
"BACKTEST_RUN_STATUS_PENDING": 1,
|
||||||
|
"BACKTEST_RUN_STATUS_RUNNING": 2,
|
||||||
|
"BACKTEST_RUN_STATUS_SUCCEEDED": 3,
|
||||||
|
"BACKTEST_RUN_STATUS_FAILED": 4,
|
||||||
|
"BACKTEST_RUN_STATUS_CANCELED": 5,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func (x BacktestRunStatus) Enum() *BacktestRunStatus {
|
||||||
|
p := new(BacktestRunStatus)
|
||||||
|
*p = x
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x BacktestRunStatus) String() string {
|
||||||
|
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (BacktestRunStatus) Descriptor() protoreflect.EnumDescriptor {
|
||||||
|
return file_alt_v1_backtest_proto_enumTypes[0].Descriptor()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (BacktestRunStatus) Type() protoreflect.EnumType {
|
||||||
|
return &file_alt_v1_backtest_proto_enumTypes[0]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x BacktestRunStatus) Number() protoreflect.EnumNumber {
|
||||||
|
return protoreflect.EnumNumber(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use BacktestRunStatus.Descriptor instead.
|
||||||
|
func (BacktestRunStatus) EnumDescriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_backtest_proto_rawDescGZIP(), []int{0}
|
||||||
|
}
|
||||||
|
|
||||||
|
type BacktestRunSpec struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
StrategyId string `protobuf:"bytes,1,opt,name=strategy_id,json=strategyId,proto3" json:"strategy_id,omitempty"`
|
||||||
|
Market Market `protobuf:"varint,2,opt,name=market,proto3,enum=alt.v1.Market" json:"market,omitempty"`
|
||||||
|
Timeframe Timeframe `protobuf:"varint,3,opt,name=timeframe,proto3,enum=alt.v1.Timeframe" json:"timeframe,omitempty"`
|
||||||
|
FromUnixMs int64 `protobuf:"varint,4,opt,name=from_unix_ms,json=fromUnixMs,proto3" json:"from_unix_ms,omitempty"`
|
||||||
|
ToUnixMs int64 `protobuf:"varint,5,opt,name=to_unix_ms,json=toUnixMs,proto3" json:"to_unix_ms,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BacktestRunSpec) Reset() {
|
||||||
|
*x = BacktestRunSpec{}
|
||||||
|
mi := &file_alt_v1_backtest_proto_msgTypes[0]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BacktestRunSpec) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*BacktestRunSpec) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *BacktestRunSpec) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_alt_v1_backtest_proto_msgTypes[0]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use BacktestRunSpec.ProtoReflect.Descriptor instead.
|
||||||
|
func (*BacktestRunSpec) Descriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_backtest_proto_rawDescGZIP(), []int{0}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BacktestRunSpec) GetStrategyId() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.StrategyId
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BacktestRunSpec) GetMarket() Market {
|
||||||
|
if x != nil {
|
||||||
|
return x.Market
|
||||||
|
}
|
||||||
|
return Market_MARKET_UNSPECIFIED
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BacktestRunSpec) GetTimeframe() Timeframe {
|
||||||
|
if x != nil {
|
||||||
|
return x.Timeframe
|
||||||
|
}
|
||||||
|
return Timeframe_TIMEFRAME_UNSPECIFIED
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BacktestRunSpec) GetFromUnixMs() int64 {
|
||||||
|
if x != nil {
|
||||||
|
return x.FromUnixMs
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BacktestRunSpec) GetToUnixMs() int64 {
|
||||||
|
if x != nil {
|
||||||
|
return x.ToUnixMs
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
type BacktestRun struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
|
||||||
|
Spec *BacktestRunSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"`
|
||||||
|
Status BacktestRunStatus `protobuf:"varint,3,opt,name=status,proto3,enum=alt.v1.BacktestRunStatus" json:"status,omitempty"`
|
||||||
|
CreatedAtUnixMs int64 `protobuf:"varint,4,opt,name=created_at_unix_ms,json=createdAtUnixMs,proto3" json:"created_at_unix_ms,omitempty"`
|
||||||
|
UpdatedAtUnixMs int64 `protobuf:"varint,5,opt,name=updated_at_unix_ms,json=updatedAtUnixMs,proto3" json:"updated_at_unix_ms,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BacktestRun) Reset() {
|
||||||
|
*x = BacktestRun{}
|
||||||
|
mi := &file_alt_v1_backtest_proto_msgTypes[1]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BacktestRun) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*BacktestRun) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *BacktestRun) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_alt_v1_backtest_proto_msgTypes[1]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use BacktestRun.ProtoReflect.Descriptor instead.
|
||||||
|
func (*BacktestRun) Descriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_backtest_proto_rawDescGZIP(), []int{1}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BacktestRun) GetId() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Id
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BacktestRun) GetSpec() *BacktestRunSpec {
|
||||||
|
if x != nil {
|
||||||
|
return x.Spec
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BacktestRun) GetStatus() BacktestRunStatus {
|
||||||
|
if x != nil {
|
||||||
|
return x.Status
|
||||||
|
}
|
||||||
|
return BacktestRunStatus_BACKTEST_RUN_STATUS_UNSPECIFIED
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BacktestRun) GetCreatedAtUnixMs() int64 {
|
||||||
|
if x != nil {
|
||||||
|
return x.CreatedAtUnixMs
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BacktestRun) GetUpdatedAtUnixMs() int64 {
|
||||||
|
if x != nil {
|
||||||
|
return x.UpdatedAtUnixMs
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
type StartBacktestRequest struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
Spec *BacktestRunSpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StartBacktestRequest) Reset() {
|
||||||
|
*x = StartBacktestRequest{}
|
||||||
|
mi := &file_alt_v1_backtest_proto_msgTypes[2]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StartBacktestRequest) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*StartBacktestRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *StartBacktestRequest) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_alt_v1_backtest_proto_msgTypes[2]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use StartBacktestRequest.ProtoReflect.Descriptor instead.
|
||||||
|
func (*StartBacktestRequest) Descriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_backtest_proto_rawDescGZIP(), []int{2}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StartBacktestRequest) GetSpec() *BacktestRunSpec {
|
||||||
|
if x != nil {
|
||||||
|
return x.Spec
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type StartBacktestResponse struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
Run *BacktestRun `protobuf:"bytes,1,opt,name=run,proto3" json:"run,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StartBacktestResponse) Reset() {
|
||||||
|
*x = StartBacktestResponse{}
|
||||||
|
mi := &file_alt_v1_backtest_proto_msgTypes[3]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StartBacktestResponse) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*StartBacktestResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *StartBacktestResponse) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_alt_v1_backtest_proto_msgTypes[3]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use StartBacktestResponse.ProtoReflect.Descriptor instead.
|
||||||
|
func (*StartBacktestResponse) Descriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_backtest_proto_rawDescGZIP(), []int{3}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StartBacktestResponse) GetRun() *BacktestRun {
|
||||||
|
if x != nil {
|
||||||
|
return x.Run
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetBacktestRunRequest struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
RunId string `protobuf:"bytes,1,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *GetBacktestRunRequest) Reset() {
|
||||||
|
*x = GetBacktestRunRequest{}
|
||||||
|
mi := &file_alt_v1_backtest_proto_msgTypes[4]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *GetBacktestRunRequest) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*GetBacktestRunRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *GetBacktestRunRequest) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_alt_v1_backtest_proto_msgTypes[4]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use GetBacktestRunRequest.ProtoReflect.Descriptor instead.
|
||||||
|
func (*GetBacktestRunRequest) Descriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_backtest_proto_rawDescGZIP(), []int{4}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *GetBacktestRunRequest) GetRunId() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.RunId
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetBacktestRunResponse struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
Run *BacktestRun `protobuf:"bytes,1,opt,name=run,proto3" json:"run,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *GetBacktestRunResponse) Reset() {
|
||||||
|
*x = GetBacktestRunResponse{}
|
||||||
|
mi := &file_alt_v1_backtest_proto_msgTypes[5]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *GetBacktestRunResponse) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*GetBacktestRunResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *GetBacktestRunResponse) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_alt_v1_backtest_proto_msgTypes[5]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use GetBacktestRunResponse.ProtoReflect.Descriptor instead.
|
||||||
|
func (*GetBacktestRunResponse) Descriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_backtest_proto_rawDescGZIP(), []int{5}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *GetBacktestRunResponse) GetRun() *BacktestRun {
|
||||||
|
if x != nil {
|
||||||
|
return x.Run
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type BacktestResult struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
RunId string `protobuf:"bytes,1,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
|
||||||
|
StartingCash *Price `protobuf:"bytes,2,opt,name=starting_cash,json=startingCash,proto3" json:"starting_cash,omitempty"`
|
||||||
|
EndingEquity *Price `protobuf:"bytes,3,opt,name=ending_equity,json=endingEquity,proto3" json:"ending_equity,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BacktestResult) Reset() {
|
||||||
|
*x = BacktestResult{}
|
||||||
|
mi := &file_alt_v1_backtest_proto_msgTypes[6]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BacktestResult) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*BacktestResult) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *BacktestResult) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_alt_v1_backtest_proto_msgTypes[6]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use BacktestResult.ProtoReflect.Descriptor instead.
|
||||||
|
func (*BacktestResult) Descriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_backtest_proto_rawDescGZIP(), []int{6}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BacktestResult) GetRunId() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.RunId
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BacktestResult) GetStartingCash() *Price {
|
||||||
|
if x != nil {
|
||||||
|
return x.StartingCash
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BacktestResult) GetEndingEquity() *Price {
|
||||||
|
if x != nil {
|
||||||
|
return x.EndingEquity
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetBacktestResultRequest struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
RunId string `protobuf:"bytes,1,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *GetBacktestResultRequest) Reset() {
|
||||||
|
*x = GetBacktestResultRequest{}
|
||||||
|
mi := &file_alt_v1_backtest_proto_msgTypes[7]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *GetBacktestResultRequest) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*GetBacktestResultRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *GetBacktestResultRequest) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_alt_v1_backtest_proto_msgTypes[7]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use GetBacktestResultRequest.ProtoReflect.Descriptor instead.
|
||||||
|
func (*GetBacktestResultRequest) Descriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_backtest_proto_rawDescGZIP(), []int{7}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *GetBacktestResultRequest) GetRunId() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.RunId
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetBacktestResultResponse struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
Result *BacktestResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *GetBacktestResultResponse) Reset() {
|
||||||
|
*x = GetBacktestResultResponse{}
|
||||||
|
mi := &file_alt_v1_backtest_proto_msgTypes[8]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *GetBacktestResultResponse) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*GetBacktestResultResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *GetBacktestResultResponse) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_alt_v1_backtest_proto_msgTypes[8]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use GetBacktestResultResponse.ProtoReflect.Descriptor instead.
|
||||||
|
func (*GetBacktestResultResponse) Descriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_backtest_proto_rawDescGZIP(), []int{8}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *GetBacktestResultResponse) GetResult() *BacktestResult {
|
||||||
|
if x != nil {
|
||||||
|
return x.Result
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var File_alt_v1_backtest_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
|
const file_alt_v1_backtest_proto_rawDesc = "" +
|
||||||
|
"\n" +
|
||||||
|
"\x15alt/v1/backtest.proto\x12\x06alt.v1\x1a\x13alt/v1/common.proto\x1a\x13alt/v1/market.proto\"\xcb\x01\n" +
|
||||||
|
"\x0fBacktestRunSpec\x12\x1f\n" +
|
||||||
|
"\vstrategy_id\x18\x01 \x01(\tR\n" +
|
||||||
|
"strategyId\x12&\n" +
|
||||||
|
"\x06market\x18\x02 \x01(\x0e2\x0e.alt.v1.MarketR\x06market\x12/\n" +
|
||||||
|
"\ttimeframe\x18\x03 \x01(\x0e2\x11.alt.v1.TimeframeR\ttimeframe\x12 \n" +
|
||||||
|
"\ffrom_unix_ms\x18\x04 \x01(\x03R\n" +
|
||||||
|
"fromUnixMs\x12\x1c\n" +
|
||||||
|
"\n" +
|
||||||
|
"to_unix_ms\x18\x05 \x01(\x03R\btoUnixMs\"\xd7\x01\n" +
|
||||||
|
"\vBacktestRun\x12\x0e\n" +
|
||||||
|
"\x02id\x18\x01 \x01(\tR\x02id\x12+\n" +
|
||||||
|
"\x04spec\x18\x02 \x01(\v2\x17.alt.v1.BacktestRunSpecR\x04spec\x121\n" +
|
||||||
|
"\x06status\x18\x03 \x01(\x0e2\x19.alt.v1.BacktestRunStatusR\x06status\x12+\n" +
|
||||||
|
"\x12created_at_unix_ms\x18\x04 \x01(\x03R\x0fcreatedAtUnixMs\x12+\n" +
|
||||||
|
"\x12updated_at_unix_ms\x18\x05 \x01(\x03R\x0fupdatedAtUnixMs\"C\n" +
|
||||||
|
"\x14StartBacktestRequest\x12+\n" +
|
||||||
|
"\x04spec\x18\x01 \x01(\v2\x17.alt.v1.BacktestRunSpecR\x04spec\">\n" +
|
||||||
|
"\x15StartBacktestResponse\x12%\n" +
|
||||||
|
"\x03run\x18\x01 \x01(\v2\x13.alt.v1.BacktestRunR\x03run\".\n" +
|
||||||
|
"\x15GetBacktestRunRequest\x12\x15\n" +
|
||||||
|
"\x06run_id\x18\x01 \x01(\tR\x05runId\"?\n" +
|
||||||
|
"\x16GetBacktestRunResponse\x12%\n" +
|
||||||
|
"\x03run\x18\x01 \x01(\v2\x13.alt.v1.BacktestRunR\x03run\"\x8f\x01\n" +
|
||||||
|
"\x0eBacktestResult\x12\x15\n" +
|
||||||
|
"\x06run_id\x18\x01 \x01(\tR\x05runId\x122\n" +
|
||||||
|
"\rstarting_cash\x18\x02 \x01(\v2\r.alt.v1.PriceR\fstartingCash\x122\n" +
|
||||||
|
"\rending_equity\x18\x03 \x01(\v2\r.alt.v1.PriceR\fendingEquity\"1\n" +
|
||||||
|
"\x18GetBacktestResultRequest\x12\x15\n" +
|
||||||
|
"\x06run_id\x18\x01 \x01(\tR\x05runId\"K\n" +
|
||||||
|
"\x19GetBacktestResultResponse\x12.\n" +
|
||||||
|
"\x06result\x18\x01 \x01(\v2\x16.alt.v1.BacktestResultR\x06result*\xdf\x01\n" +
|
||||||
|
"\x11BacktestRunStatus\x12#\n" +
|
||||||
|
"\x1fBACKTEST_RUN_STATUS_UNSPECIFIED\x10\x00\x12\x1f\n" +
|
||||||
|
"\x1bBACKTEST_RUN_STATUS_PENDING\x10\x01\x12\x1f\n" +
|
||||||
|
"\x1bBACKTEST_RUN_STATUS_RUNNING\x10\x02\x12!\n" +
|
||||||
|
"\x1dBACKTEST_RUN_STATUS_SUCCEEDED\x10\x03\x12\x1e\n" +
|
||||||
|
"\x1aBACKTEST_RUN_STATUS_FAILED\x10\x04\x12 \n" +
|
||||||
|
"\x1cBACKTEST_RUN_STATUS_CANCELED\x10\x05BCZAgit.toki-labs.com/toki/alt/packages/contracts/gen/go/alt/v1;altv1b\x06proto3"
|
||||||
|
|
||||||
|
var (
|
||||||
|
file_alt_v1_backtest_proto_rawDescOnce sync.Once
|
||||||
|
file_alt_v1_backtest_proto_rawDescData []byte
|
||||||
|
)
|
||||||
|
|
||||||
|
func file_alt_v1_backtest_proto_rawDescGZIP() []byte {
|
||||||
|
file_alt_v1_backtest_proto_rawDescOnce.Do(func() {
|
||||||
|
file_alt_v1_backtest_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_alt_v1_backtest_proto_rawDesc), len(file_alt_v1_backtest_proto_rawDesc)))
|
||||||
|
})
|
||||||
|
return file_alt_v1_backtest_proto_rawDescData
|
||||||
|
}
|
||||||
|
|
||||||
|
var file_alt_v1_backtest_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
|
||||||
|
var file_alt_v1_backtest_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
|
||||||
|
var file_alt_v1_backtest_proto_goTypes = []any{
|
||||||
|
(BacktestRunStatus)(0), // 0: alt.v1.BacktestRunStatus
|
||||||
|
(*BacktestRunSpec)(nil), // 1: alt.v1.BacktestRunSpec
|
||||||
|
(*BacktestRun)(nil), // 2: alt.v1.BacktestRun
|
||||||
|
(*StartBacktestRequest)(nil), // 3: alt.v1.StartBacktestRequest
|
||||||
|
(*StartBacktestResponse)(nil), // 4: alt.v1.StartBacktestResponse
|
||||||
|
(*GetBacktestRunRequest)(nil), // 5: alt.v1.GetBacktestRunRequest
|
||||||
|
(*GetBacktestRunResponse)(nil), // 6: alt.v1.GetBacktestRunResponse
|
||||||
|
(*BacktestResult)(nil), // 7: alt.v1.BacktestResult
|
||||||
|
(*GetBacktestResultRequest)(nil), // 8: alt.v1.GetBacktestResultRequest
|
||||||
|
(*GetBacktestResultResponse)(nil), // 9: alt.v1.GetBacktestResultResponse
|
||||||
|
(Market)(0), // 10: alt.v1.Market
|
||||||
|
(Timeframe)(0), // 11: alt.v1.Timeframe
|
||||||
|
(*Price)(nil), // 12: alt.v1.Price
|
||||||
|
}
|
||||||
|
var file_alt_v1_backtest_proto_depIdxs = []int32{
|
||||||
|
10, // 0: alt.v1.BacktestRunSpec.market:type_name -> alt.v1.Market
|
||||||
|
11, // 1: alt.v1.BacktestRunSpec.timeframe:type_name -> alt.v1.Timeframe
|
||||||
|
1, // 2: alt.v1.BacktestRun.spec:type_name -> alt.v1.BacktestRunSpec
|
||||||
|
0, // 3: alt.v1.BacktestRun.status:type_name -> alt.v1.BacktestRunStatus
|
||||||
|
1, // 4: alt.v1.StartBacktestRequest.spec:type_name -> alt.v1.BacktestRunSpec
|
||||||
|
2, // 5: alt.v1.StartBacktestResponse.run:type_name -> alt.v1.BacktestRun
|
||||||
|
2, // 6: alt.v1.GetBacktestRunResponse.run:type_name -> alt.v1.BacktestRun
|
||||||
|
12, // 7: alt.v1.BacktestResult.starting_cash:type_name -> alt.v1.Price
|
||||||
|
12, // 8: alt.v1.BacktestResult.ending_equity:type_name -> alt.v1.Price
|
||||||
|
7, // 9: alt.v1.GetBacktestResultResponse.result:type_name -> alt.v1.BacktestResult
|
||||||
|
10, // [10:10] is the sub-list for method output_type
|
||||||
|
10, // [10:10] is the sub-list for method input_type
|
||||||
|
10, // [10:10] is the sub-list for extension type_name
|
||||||
|
10, // [10:10] is the sub-list for extension extendee
|
||||||
|
0, // [0:10] is the sub-list for field type_name
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() { file_alt_v1_backtest_proto_init() }
|
||||||
|
func file_alt_v1_backtest_proto_init() {
|
||||||
|
if File_alt_v1_backtest_proto != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
file_alt_v1_common_proto_init()
|
||||||
|
file_alt_v1_market_proto_init()
|
||||||
|
type x struct{}
|
||||||
|
out := protoimpl.TypeBuilder{
|
||||||
|
File: protoimpl.DescBuilder{
|
||||||
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
|
RawDescriptor: unsafe.Slice(unsafe.StringData(file_alt_v1_backtest_proto_rawDesc), len(file_alt_v1_backtest_proto_rawDesc)),
|
||||||
|
NumEnums: 1,
|
||||||
|
NumMessages: 9,
|
||||||
|
NumExtensions: 0,
|
||||||
|
NumServices: 0,
|
||||||
|
},
|
||||||
|
GoTypes: file_alt_v1_backtest_proto_goTypes,
|
||||||
|
DependencyIndexes: file_alt_v1_backtest_proto_depIdxs,
|
||||||
|
EnumInfos: file_alt_v1_backtest_proto_enumTypes,
|
||||||
|
MessageInfos: file_alt_v1_backtest_proto_msgTypes,
|
||||||
|
}.Build()
|
||||||
|
File_alt_v1_backtest_proto = out.File
|
||||||
|
file_alt_v1_backtest_proto_goTypes = nil
|
||||||
|
file_alt_v1_backtest_proto_depIdxs = nil
|
||||||
|
}
|
||||||
546
packages/contracts/gen/go/alt/v1/common.pb.go
Normal file
546
packages/contracts/gen/go/alt/v1/common.pb.go
Normal file
|
|
@ -0,0 +1,546 @@
|
||||||
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
|
// versions:
|
||||||
|
// protoc-gen-go v1.36.11
|
||||||
|
// protoc v5.29.3
|
||||||
|
// source: alt/v1/common.proto
|
||||||
|
|
||||||
|
package altv1
|
||||||
|
|
||||||
|
import (
|
||||||
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||||
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||||
|
reflect "reflect"
|
||||||
|
sync "sync"
|
||||||
|
unsafe "unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Verify that this generated code is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||||
|
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||||
|
)
|
||||||
|
|
||||||
|
type Market int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
Market_MARKET_UNSPECIFIED Market = 0
|
||||||
|
Market_MARKET_KR Market = 1
|
||||||
|
Market_MARKET_US Market = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
// Enum value maps for Market.
|
||||||
|
var (
|
||||||
|
Market_name = map[int32]string{
|
||||||
|
0: "MARKET_UNSPECIFIED",
|
||||||
|
1: "MARKET_KR",
|
||||||
|
2: "MARKET_US",
|
||||||
|
}
|
||||||
|
Market_value = map[string]int32{
|
||||||
|
"MARKET_UNSPECIFIED": 0,
|
||||||
|
"MARKET_KR": 1,
|
||||||
|
"MARKET_US": 2,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func (x Market) Enum() *Market {
|
||||||
|
p := new(Market)
|
||||||
|
*p = x
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x Market) String() string {
|
||||||
|
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (Market) Descriptor() protoreflect.EnumDescriptor {
|
||||||
|
return file_alt_v1_common_proto_enumTypes[0].Descriptor()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (Market) Type() protoreflect.EnumType {
|
||||||
|
return &file_alt_v1_common_proto_enumTypes[0]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x Market) Number() protoreflect.EnumNumber {
|
||||||
|
return protoreflect.EnumNumber(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use Market.Descriptor instead.
|
||||||
|
func (Market) EnumDescriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_common_proto_rawDescGZIP(), []int{0}
|
||||||
|
}
|
||||||
|
|
||||||
|
type Venue int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
Venue_VENUE_UNSPECIFIED Venue = 0
|
||||||
|
Venue_VENUE_KRX Venue = 1
|
||||||
|
Venue_VENUE_NASDAQ Venue = 2
|
||||||
|
Venue_VENUE_NYSE Venue = 3
|
||||||
|
)
|
||||||
|
|
||||||
|
// Enum value maps for Venue.
|
||||||
|
var (
|
||||||
|
Venue_name = map[int32]string{
|
||||||
|
0: "VENUE_UNSPECIFIED",
|
||||||
|
1: "VENUE_KRX",
|
||||||
|
2: "VENUE_NASDAQ",
|
||||||
|
3: "VENUE_NYSE",
|
||||||
|
}
|
||||||
|
Venue_value = map[string]int32{
|
||||||
|
"VENUE_UNSPECIFIED": 0,
|
||||||
|
"VENUE_KRX": 1,
|
||||||
|
"VENUE_NASDAQ": 2,
|
||||||
|
"VENUE_NYSE": 3,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func (x Venue) Enum() *Venue {
|
||||||
|
p := new(Venue)
|
||||||
|
*p = x
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x Venue) String() string {
|
||||||
|
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (Venue) Descriptor() protoreflect.EnumDescriptor {
|
||||||
|
return file_alt_v1_common_proto_enumTypes[1].Descriptor()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (Venue) Type() protoreflect.EnumType {
|
||||||
|
return &file_alt_v1_common_proto_enumTypes[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x Venue) Number() protoreflect.EnumNumber {
|
||||||
|
return protoreflect.EnumNumber(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use Venue.Descriptor instead.
|
||||||
|
func (Venue) EnumDescriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_common_proto_rawDescGZIP(), []int{1}
|
||||||
|
}
|
||||||
|
|
||||||
|
type Currency int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
Currency_CURRENCY_UNSPECIFIED Currency = 0
|
||||||
|
Currency_CURRENCY_KRW Currency = 1
|
||||||
|
Currency_CURRENCY_USD Currency = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
// Enum value maps for Currency.
|
||||||
|
var (
|
||||||
|
Currency_name = map[int32]string{
|
||||||
|
0: "CURRENCY_UNSPECIFIED",
|
||||||
|
1: "CURRENCY_KRW",
|
||||||
|
2: "CURRENCY_USD",
|
||||||
|
}
|
||||||
|
Currency_value = map[string]int32{
|
||||||
|
"CURRENCY_UNSPECIFIED": 0,
|
||||||
|
"CURRENCY_KRW": 1,
|
||||||
|
"CURRENCY_USD": 2,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func (x Currency) Enum() *Currency {
|
||||||
|
p := new(Currency)
|
||||||
|
*p = x
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x Currency) String() string {
|
||||||
|
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (Currency) Descriptor() protoreflect.EnumDescriptor {
|
||||||
|
return file_alt_v1_common_proto_enumTypes[2].Descriptor()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (Currency) Type() protoreflect.EnumType {
|
||||||
|
return &file_alt_v1_common_proto_enumTypes[2]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x Currency) Number() protoreflect.EnumNumber {
|
||||||
|
return protoreflect.EnumNumber(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use Currency.Descriptor instead.
|
||||||
|
func (Currency) EnumDescriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_common_proto_rawDescGZIP(), []int{2}
|
||||||
|
}
|
||||||
|
|
||||||
|
type Timeframe int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
Timeframe_TIMEFRAME_UNSPECIFIED Timeframe = 0
|
||||||
|
Timeframe_TIMEFRAME_DAILY Timeframe = 1
|
||||||
|
Timeframe_TIMEFRAME_MINUTE_1 Timeframe = 2
|
||||||
|
Timeframe_TIMEFRAME_MINUTE_5 Timeframe = 3
|
||||||
|
)
|
||||||
|
|
||||||
|
// Enum value maps for Timeframe.
|
||||||
|
var (
|
||||||
|
Timeframe_name = map[int32]string{
|
||||||
|
0: "TIMEFRAME_UNSPECIFIED",
|
||||||
|
1: "TIMEFRAME_DAILY",
|
||||||
|
2: "TIMEFRAME_MINUTE_1",
|
||||||
|
3: "TIMEFRAME_MINUTE_5",
|
||||||
|
}
|
||||||
|
Timeframe_value = map[string]int32{
|
||||||
|
"TIMEFRAME_UNSPECIFIED": 0,
|
||||||
|
"TIMEFRAME_DAILY": 1,
|
||||||
|
"TIMEFRAME_MINUTE_1": 2,
|
||||||
|
"TIMEFRAME_MINUTE_5": 3,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func (x Timeframe) Enum() *Timeframe {
|
||||||
|
p := new(Timeframe)
|
||||||
|
*p = x
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x Timeframe) String() string {
|
||||||
|
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (Timeframe) Descriptor() protoreflect.EnumDescriptor {
|
||||||
|
return file_alt_v1_common_proto_enumTypes[3].Descriptor()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (Timeframe) Type() protoreflect.EnumType {
|
||||||
|
return &file_alt_v1_common_proto_enumTypes[3]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x Timeframe) Number() protoreflect.EnumNumber {
|
||||||
|
return protoreflect.EnumNumber(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use Timeframe.Descriptor instead.
|
||||||
|
func (Timeframe) EnumDescriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_common_proto_rawDescGZIP(), []int{3}
|
||||||
|
}
|
||||||
|
|
||||||
|
type Decimal struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Decimal) Reset() {
|
||||||
|
*x = Decimal{}
|
||||||
|
mi := &file_alt_v1_common_proto_msgTypes[0]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Decimal) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*Decimal) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *Decimal) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_alt_v1_common_proto_msgTypes[0]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use Decimal.ProtoReflect.Descriptor instead.
|
||||||
|
func (*Decimal) Descriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_common_proto_rawDescGZIP(), []int{0}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Decimal) GetValue() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Value
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type ErrorInfo struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"`
|
||||||
|
Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ErrorInfo) Reset() {
|
||||||
|
*x = ErrorInfo{}
|
||||||
|
mi := &file_alt_v1_common_proto_msgTypes[1]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ErrorInfo) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*ErrorInfo) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *ErrorInfo) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_alt_v1_common_proto_msgTypes[1]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use ErrorInfo.ProtoReflect.Descriptor instead.
|
||||||
|
func (*ErrorInfo) Descriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_common_proto_rawDescGZIP(), []int{1}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ErrorInfo) GetCode() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Code
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ErrorInfo) GetMessage() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Message
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type HelloRequest struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
ClientName string `protobuf:"bytes,1,opt,name=client_name,json=clientName,proto3" json:"client_name,omitempty"`
|
||||||
|
ClientVersion string `protobuf:"bytes,2,opt,name=client_version,json=clientVersion,proto3" json:"client_version,omitempty"`
|
||||||
|
AltProtocolVersion string `protobuf:"bytes,3,opt,name=alt_protocol_version,json=altProtocolVersion,proto3" json:"alt_protocol_version,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *HelloRequest) Reset() {
|
||||||
|
*x = HelloRequest{}
|
||||||
|
mi := &file_alt_v1_common_proto_msgTypes[2]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *HelloRequest) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*HelloRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *HelloRequest) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_alt_v1_common_proto_msgTypes[2]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use HelloRequest.ProtoReflect.Descriptor instead.
|
||||||
|
func (*HelloRequest) Descriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_common_proto_rawDescGZIP(), []int{2}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *HelloRequest) GetClientName() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.ClientName
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *HelloRequest) GetClientVersion() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.ClientVersion
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *HelloRequest) GetAltProtocolVersion() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.AltProtocolVersion
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type HelloResponse struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
ServerName string `protobuf:"bytes,1,opt,name=server_name,json=serverName,proto3" json:"server_name,omitempty"`
|
||||||
|
ServerVersion string `protobuf:"bytes,2,opt,name=server_version,json=serverVersion,proto3" json:"server_version,omitempty"`
|
||||||
|
AltProtocolVersion string `protobuf:"bytes,3,opt,name=alt_protocol_version,json=altProtocolVersion,proto3" json:"alt_protocol_version,omitempty"`
|
||||||
|
Capabilities []string `protobuf:"bytes,4,rep,name=capabilities,proto3" json:"capabilities,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *HelloResponse) Reset() {
|
||||||
|
*x = HelloResponse{}
|
||||||
|
mi := &file_alt_v1_common_proto_msgTypes[3]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *HelloResponse) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*HelloResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *HelloResponse) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_alt_v1_common_proto_msgTypes[3]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use HelloResponse.ProtoReflect.Descriptor instead.
|
||||||
|
func (*HelloResponse) Descriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_common_proto_rawDescGZIP(), []int{3}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *HelloResponse) GetServerName() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.ServerName
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *HelloResponse) GetServerVersion() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.ServerVersion
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *HelloResponse) GetAltProtocolVersion() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.AltProtocolVersion
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *HelloResponse) GetCapabilities() []string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Capabilities
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var File_alt_v1_common_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
|
const file_alt_v1_common_proto_rawDesc = "" +
|
||||||
|
"\n" +
|
||||||
|
"\x13alt/v1/common.proto\x12\x06alt.v1\"\x1f\n" +
|
||||||
|
"\aDecimal\x12\x14\n" +
|
||||||
|
"\x05value\x18\x01 \x01(\tR\x05value\"9\n" +
|
||||||
|
"\tErrorInfo\x12\x12\n" +
|
||||||
|
"\x04code\x18\x01 \x01(\tR\x04code\x12\x18\n" +
|
||||||
|
"\amessage\x18\x02 \x01(\tR\amessage\"\x88\x01\n" +
|
||||||
|
"\fHelloRequest\x12\x1f\n" +
|
||||||
|
"\vclient_name\x18\x01 \x01(\tR\n" +
|
||||||
|
"clientName\x12%\n" +
|
||||||
|
"\x0eclient_version\x18\x02 \x01(\tR\rclientVersion\x120\n" +
|
||||||
|
"\x14alt_protocol_version\x18\x03 \x01(\tR\x12altProtocolVersion\"\xad\x01\n" +
|
||||||
|
"\rHelloResponse\x12\x1f\n" +
|
||||||
|
"\vserver_name\x18\x01 \x01(\tR\n" +
|
||||||
|
"serverName\x12%\n" +
|
||||||
|
"\x0eserver_version\x18\x02 \x01(\tR\rserverVersion\x120\n" +
|
||||||
|
"\x14alt_protocol_version\x18\x03 \x01(\tR\x12altProtocolVersion\x12\"\n" +
|
||||||
|
"\fcapabilities\x18\x04 \x03(\tR\fcapabilities*>\n" +
|
||||||
|
"\x06Market\x12\x16\n" +
|
||||||
|
"\x12MARKET_UNSPECIFIED\x10\x00\x12\r\n" +
|
||||||
|
"\tMARKET_KR\x10\x01\x12\r\n" +
|
||||||
|
"\tMARKET_US\x10\x02*O\n" +
|
||||||
|
"\x05Venue\x12\x15\n" +
|
||||||
|
"\x11VENUE_UNSPECIFIED\x10\x00\x12\r\n" +
|
||||||
|
"\tVENUE_KRX\x10\x01\x12\x10\n" +
|
||||||
|
"\fVENUE_NASDAQ\x10\x02\x12\x0e\n" +
|
||||||
|
"\n" +
|
||||||
|
"VENUE_NYSE\x10\x03*H\n" +
|
||||||
|
"\bCurrency\x12\x18\n" +
|
||||||
|
"\x14CURRENCY_UNSPECIFIED\x10\x00\x12\x10\n" +
|
||||||
|
"\fCURRENCY_KRW\x10\x01\x12\x10\n" +
|
||||||
|
"\fCURRENCY_USD\x10\x02*k\n" +
|
||||||
|
"\tTimeframe\x12\x19\n" +
|
||||||
|
"\x15TIMEFRAME_UNSPECIFIED\x10\x00\x12\x13\n" +
|
||||||
|
"\x0fTIMEFRAME_DAILY\x10\x01\x12\x16\n" +
|
||||||
|
"\x12TIMEFRAME_MINUTE_1\x10\x02\x12\x16\n" +
|
||||||
|
"\x12TIMEFRAME_MINUTE_5\x10\x03BCZAgit.toki-labs.com/toki/alt/packages/contracts/gen/go/alt/v1;altv1b\x06proto3"
|
||||||
|
|
||||||
|
var (
|
||||||
|
file_alt_v1_common_proto_rawDescOnce sync.Once
|
||||||
|
file_alt_v1_common_proto_rawDescData []byte
|
||||||
|
)
|
||||||
|
|
||||||
|
func file_alt_v1_common_proto_rawDescGZIP() []byte {
|
||||||
|
file_alt_v1_common_proto_rawDescOnce.Do(func() {
|
||||||
|
file_alt_v1_common_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_alt_v1_common_proto_rawDesc), len(file_alt_v1_common_proto_rawDesc)))
|
||||||
|
})
|
||||||
|
return file_alt_v1_common_proto_rawDescData
|
||||||
|
}
|
||||||
|
|
||||||
|
var file_alt_v1_common_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
|
||||||
|
var file_alt_v1_common_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
|
||||||
|
var file_alt_v1_common_proto_goTypes = []any{
|
||||||
|
(Market)(0), // 0: alt.v1.Market
|
||||||
|
(Venue)(0), // 1: alt.v1.Venue
|
||||||
|
(Currency)(0), // 2: alt.v1.Currency
|
||||||
|
(Timeframe)(0), // 3: alt.v1.Timeframe
|
||||||
|
(*Decimal)(nil), // 4: alt.v1.Decimal
|
||||||
|
(*ErrorInfo)(nil), // 5: alt.v1.ErrorInfo
|
||||||
|
(*HelloRequest)(nil), // 6: alt.v1.HelloRequest
|
||||||
|
(*HelloResponse)(nil), // 7: alt.v1.HelloResponse
|
||||||
|
}
|
||||||
|
var file_alt_v1_common_proto_depIdxs = []int32{
|
||||||
|
0, // [0:0] is the sub-list for method output_type
|
||||||
|
0, // [0:0] is the sub-list for method input_type
|
||||||
|
0, // [0:0] is the sub-list for extension type_name
|
||||||
|
0, // [0:0] is the sub-list for extension extendee
|
||||||
|
0, // [0:0] is the sub-list for field type_name
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() { file_alt_v1_common_proto_init() }
|
||||||
|
func file_alt_v1_common_proto_init() {
|
||||||
|
if File_alt_v1_common_proto != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
type x struct{}
|
||||||
|
out := protoimpl.TypeBuilder{
|
||||||
|
File: protoimpl.DescBuilder{
|
||||||
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
|
RawDescriptor: unsafe.Slice(unsafe.StringData(file_alt_v1_common_proto_rawDesc), len(file_alt_v1_common_proto_rawDesc)),
|
||||||
|
NumEnums: 4,
|
||||||
|
NumMessages: 4,
|
||||||
|
NumExtensions: 0,
|
||||||
|
NumServices: 0,
|
||||||
|
},
|
||||||
|
GoTypes: file_alt_v1_common_proto_goTypes,
|
||||||
|
DependencyIndexes: file_alt_v1_common_proto_depIdxs,
|
||||||
|
EnumInfos: file_alt_v1_common_proto_enumTypes,
|
||||||
|
MessageInfos: file_alt_v1_common_proto_msgTypes,
|
||||||
|
}.Build()
|
||||||
|
File_alt_v1_common_proto = out.File
|
||||||
|
file_alt_v1_common_proto_goTypes = nil
|
||||||
|
file_alt_v1_common_proto_depIdxs = nil
|
||||||
|
}
|
||||||
643
packages/contracts/gen/go/alt/v1/market.pb.go
Normal file
643
packages/contracts/gen/go/alt/v1/market.pb.go
Normal file
|
|
@ -0,0 +1,643 @@
|
||||||
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
|
// versions:
|
||||||
|
// protoc-gen-go v1.36.11
|
||||||
|
// protoc v5.29.3
|
||||||
|
// source: alt/v1/market.proto
|
||||||
|
|
||||||
|
package altv1
|
||||||
|
|
||||||
|
import (
|
||||||
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||||
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||||
|
reflect "reflect"
|
||||||
|
sync "sync"
|
||||||
|
unsafe "unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Verify that this generated code is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||||
|
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||||
|
)
|
||||||
|
|
||||||
|
type Instrument struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
|
||||||
|
Market Market `protobuf:"varint,2,opt,name=market,proto3,enum=alt.v1.Market" json:"market,omitempty"`
|
||||||
|
Venue Venue `protobuf:"varint,3,opt,name=venue,proto3,enum=alt.v1.Venue" json:"venue,omitempty"`
|
||||||
|
Symbol string `protobuf:"bytes,4,opt,name=symbol,proto3" json:"symbol,omitempty"`
|
||||||
|
Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"`
|
||||||
|
Currency Currency `protobuf:"varint,6,opt,name=currency,proto3,enum=alt.v1.Currency" json:"currency,omitempty"`
|
||||||
|
ProviderSymbols map[string]string `protobuf:"bytes,7,rep,name=provider_symbols,json=providerSymbols,proto3" json:"provider_symbols,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Instrument) Reset() {
|
||||||
|
*x = Instrument{}
|
||||||
|
mi := &file_alt_v1_market_proto_msgTypes[0]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Instrument) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*Instrument) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *Instrument) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_alt_v1_market_proto_msgTypes[0]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use Instrument.ProtoReflect.Descriptor instead.
|
||||||
|
func (*Instrument) Descriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_market_proto_rawDescGZIP(), []int{0}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Instrument) GetId() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Id
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Instrument) GetMarket() Market {
|
||||||
|
if x != nil {
|
||||||
|
return x.Market
|
||||||
|
}
|
||||||
|
return Market_MARKET_UNSPECIFIED
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Instrument) GetVenue() Venue {
|
||||||
|
if x != nil {
|
||||||
|
return x.Venue
|
||||||
|
}
|
||||||
|
return Venue_VENUE_UNSPECIFIED
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Instrument) GetSymbol() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Symbol
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Instrument) GetName() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Name
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Instrument) GetCurrency() Currency {
|
||||||
|
if x != nil {
|
||||||
|
return x.Currency
|
||||||
|
}
|
||||||
|
return Currency_CURRENCY_UNSPECIFIED
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Instrument) GetProviderSymbols() map[string]string {
|
||||||
|
if x != nil {
|
||||||
|
return x.ProviderSymbols
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type Price struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
Currency Currency `protobuf:"varint,1,opt,name=currency,proto3,enum=alt.v1.Currency" json:"currency,omitempty"`
|
||||||
|
Amount *Decimal `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Price) Reset() {
|
||||||
|
*x = Price{}
|
||||||
|
mi := &file_alt_v1_market_proto_msgTypes[1]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Price) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*Price) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *Price) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_alt_v1_market_proto_msgTypes[1]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use Price.ProtoReflect.Descriptor instead.
|
||||||
|
func (*Price) Descriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_market_proto_rawDescGZIP(), []int{1}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Price) GetCurrency() Currency {
|
||||||
|
if x != nil {
|
||||||
|
return x.Currency
|
||||||
|
}
|
||||||
|
return Currency_CURRENCY_UNSPECIFIED
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Price) GetAmount() *Decimal {
|
||||||
|
if x != nil {
|
||||||
|
return x.Amount
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type Quantity struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
Amount *Decimal `protobuf:"bytes,1,opt,name=amount,proto3" json:"amount,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Quantity) Reset() {
|
||||||
|
*x = Quantity{}
|
||||||
|
mi := &file_alt_v1_market_proto_msgTypes[2]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Quantity) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*Quantity) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *Quantity) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_alt_v1_market_proto_msgTypes[2]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use Quantity.ProtoReflect.Descriptor instead.
|
||||||
|
func (*Quantity) Descriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_market_proto_rawDescGZIP(), []int{2}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Quantity) GetAmount() *Decimal {
|
||||||
|
if x != nil {
|
||||||
|
return x.Amount
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type Bar struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
InstrumentId string `protobuf:"bytes,1,opt,name=instrument_id,json=instrumentId,proto3" json:"instrument_id,omitempty"`
|
||||||
|
Timeframe Timeframe `protobuf:"varint,2,opt,name=timeframe,proto3,enum=alt.v1.Timeframe" json:"timeframe,omitempty"`
|
||||||
|
TimestampUnixMs int64 `protobuf:"varint,3,opt,name=timestamp_unix_ms,json=timestampUnixMs,proto3" json:"timestamp_unix_ms,omitempty"`
|
||||||
|
Open *Price `protobuf:"bytes,4,opt,name=open,proto3" json:"open,omitempty"`
|
||||||
|
High *Price `protobuf:"bytes,5,opt,name=high,proto3" json:"high,omitempty"`
|
||||||
|
Low *Price `protobuf:"bytes,6,opt,name=low,proto3" json:"low,omitempty"`
|
||||||
|
Close *Price `protobuf:"bytes,7,opt,name=close,proto3" json:"close,omitempty"`
|
||||||
|
Volume *Quantity `protobuf:"bytes,8,opt,name=volume,proto3" json:"volume,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Bar) Reset() {
|
||||||
|
*x = Bar{}
|
||||||
|
mi := &file_alt_v1_market_proto_msgTypes[3]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Bar) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*Bar) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *Bar) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_alt_v1_market_proto_msgTypes[3]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use Bar.ProtoReflect.Descriptor instead.
|
||||||
|
func (*Bar) Descriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_market_proto_rawDescGZIP(), []int{3}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Bar) GetInstrumentId() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.InstrumentId
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Bar) GetTimeframe() Timeframe {
|
||||||
|
if x != nil {
|
||||||
|
return x.Timeframe
|
||||||
|
}
|
||||||
|
return Timeframe_TIMEFRAME_UNSPECIFIED
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Bar) GetTimestampUnixMs() int64 {
|
||||||
|
if x != nil {
|
||||||
|
return x.TimestampUnixMs
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Bar) GetOpen() *Price {
|
||||||
|
if x != nil {
|
||||||
|
return x.Open
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Bar) GetHigh() *Price {
|
||||||
|
if x != nil {
|
||||||
|
return x.High
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Bar) GetLow() *Price {
|
||||||
|
if x != nil {
|
||||||
|
return x.Low
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Bar) GetClose() *Price {
|
||||||
|
if x != nil {
|
||||||
|
return x.Close
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Bar) GetVolume() *Quantity {
|
||||||
|
if x != nil {
|
||||||
|
return x.Volume
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type ListInstrumentsRequest struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
Market Market `protobuf:"varint,1,opt,name=market,proto3,enum=alt.v1.Market" json:"market,omitempty"`
|
||||||
|
Provider string `protobuf:"bytes,2,opt,name=provider,proto3" json:"provider,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListInstrumentsRequest) Reset() {
|
||||||
|
*x = ListInstrumentsRequest{}
|
||||||
|
mi := &file_alt_v1_market_proto_msgTypes[4]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListInstrumentsRequest) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*ListInstrumentsRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *ListInstrumentsRequest) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_alt_v1_market_proto_msgTypes[4]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use ListInstrumentsRequest.ProtoReflect.Descriptor instead.
|
||||||
|
func (*ListInstrumentsRequest) Descriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_market_proto_rawDescGZIP(), []int{4}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListInstrumentsRequest) GetMarket() Market {
|
||||||
|
if x != nil {
|
||||||
|
return x.Market
|
||||||
|
}
|
||||||
|
return Market_MARKET_UNSPECIFIED
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListInstrumentsRequest) GetProvider() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Provider
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type ListInstrumentsResponse struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
Instruments []*Instrument `protobuf:"bytes,1,rep,name=instruments,proto3" json:"instruments,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListInstrumentsResponse) Reset() {
|
||||||
|
*x = ListInstrumentsResponse{}
|
||||||
|
mi := &file_alt_v1_market_proto_msgTypes[5]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListInstrumentsResponse) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*ListInstrumentsResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *ListInstrumentsResponse) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_alt_v1_market_proto_msgTypes[5]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use ListInstrumentsResponse.ProtoReflect.Descriptor instead.
|
||||||
|
func (*ListInstrumentsResponse) Descriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_market_proto_rawDescGZIP(), []int{5}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListInstrumentsResponse) GetInstruments() []*Instrument {
|
||||||
|
if x != nil {
|
||||||
|
return x.Instruments
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type ListBarsRequest struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
InstrumentId string `protobuf:"bytes,1,opt,name=instrument_id,json=instrumentId,proto3" json:"instrument_id,omitempty"`
|
||||||
|
Timeframe Timeframe `protobuf:"varint,2,opt,name=timeframe,proto3,enum=alt.v1.Timeframe" json:"timeframe,omitempty"`
|
||||||
|
FromUnixMs int64 `protobuf:"varint,3,opt,name=from_unix_ms,json=fromUnixMs,proto3" json:"from_unix_ms,omitempty"`
|
||||||
|
ToUnixMs int64 `protobuf:"varint,4,opt,name=to_unix_ms,json=toUnixMs,proto3" json:"to_unix_ms,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListBarsRequest) Reset() {
|
||||||
|
*x = ListBarsRequest{}
|
||||||
|
mi := &file_alt_v1_market_proto_msgTypes[6]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListBarsRequest) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*ListBarsRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *ListBarsRequest) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_alt_v1_market_proto_msgTypes[6]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use ListBarsRequest.ProtoReflect.Descriptor instead.
|
||||||
|
func (*ListBarsRequest) Descriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_market_proto_rawDescGZIP(), []int{6}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListBarsRequest) GetInstrumentId() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.InstrumentId
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListBarsRequest) GetTimeframe() Timeframe {
|
||||||
|
if x != nil {
|
||||||
|
return x.Timeframe
|
||||||
|
}
|
||||||
|
return Timeframe_TIMEFRAME_UNSPECIFIED
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListBarsRequest) GetFromUnixMs() int64 {
|
||||||
|
if x != nil {
|
||||||
|
return x.FromUnixMs
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListBarsRequest) GetToUnixMs() int64 {
|
||||||
|
if x != nil {
|
||||||
|
return x.ToUnixMs
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
type ListBarsResponse struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
Bars []*Bar `protobuf:"bytes,1,rep,name=bars,proto3" json:"bars,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListBarsResponse) Reset() {
|
||||||
|
*x = ListBarsResponse{}
|
||||||
|
mi := &file_alt_v1_market_proto_msgTypes[7]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListBarsResponse) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*ListBarsResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *ListBarsResponse) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_alt_v1_market_proto_msgTypes[7]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use ListBarsResponse.ProtoReflect.Descriptor instead.
|
||||||
|
func (*ListBarsResponse) Descriptor() ([]byte, []int) {
|
||||||
|
return file_alt_v1_market_proto_rawDescGZIP(), []int{7}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListBarsResponse) GetBars() []*Bar {
|
||||||
|
if x != nil {
|
||||||
|
return x.Bars
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var File_alt_v1_market_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
|
const file_alt_v1_market_proto_rawDesc = "" +
|
||||||
|
"\n" +
|
||||||
|
"\x13alt/v1/market.proto\x12\x06alt.v1\x1a\x13alt/v1/common.proto\"\xdb\x02\n" +
|
||||||
|
"\n" +
|
||||||
|
"Instrument\x12\x0e\n" +
|
||||||
|
"\x02id\x18\x01 \x01(\tR\x02id\x12&\n" +
|
||||||
|
"\x06market\x18\x02 \x01(\x0e2\x0e.alt.v1.MarketR\x06market\x12#\n" +
|
||||||
|
"\x05venue\x18\x03 \x01(\x0e2\r.alt.v1.VenueR\x05venue\x12\x16\n" +
|
||||||
|
"\x06symbol\x18\x04 \x01(\tR\x06symbol\x12\x12\n" +
|
||||||
|
"\x04name\x18\x05 \x01(\tR\x04name\x12,\n" +
|
||||||
|
"\bcurrency\x18\x06 \x01(\x0e2\x10.alt.v1.CurrencyR\bcurrency\x12R\n" +
|
||||||
|
"\x10provider_symbols\x18\a \x03(\v2'.alt.v1.Instrument.ProviderSymbolsEntryR\x0fproviderSymbols\x1aB\n" +
|
||||||
|
"\x14ProviderSymbolsEntry\x12\x10\n" +
|
||||||
|
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
|
||||||
|
"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"^\n" +
|
||||||
|
"\x05Price\x12,\n" +
|
||||||
|
"\bcurrency\x18\x01 \x01(\x0e2\x10.alt.v1.CurrencyR\bcurrency\x12'\n" +
|
||||||
|
"\x06amount\x18\x02 \x01(\v2\x0f.alt.v1.DecimalR\x06amount\"3\n" +
|
||||||
|
"\bQuantity\x12'\n" +
|
||||||
|
"\x06amount\x18\x01 \x01(\v2\x0f.alt.v1.DecimalR\x06amount\"\xbd\x02\n" +
|
||||||
|
"\x03Bar\x12#\n" +
|
||||||
|
"\rinstrument_id\x18\x01 \x01(\tR\finstrumentId\x12/\n" +
|
||||||
|
"\ttimeframe\x18\x02 \x01(\x0e2\x11.alt.v1.TimeframeR\ttimeframe\x12*\n" +
|
||||||
|
"\x11timestamp_unix_ms\x18\x03 \x01(\x03R\x0ftimestampUnixMs\x12!\n" +
|
||||||
|
"\x04open\x18\x04 \x01(\v2\r.alt.v1.PriceR\x04open\x12!\n" +
|
||||||
|
"\x04high\x18\x05 \x01(\v2\r.alt.v1.PriceR\x04high\x12\x1f\n" +
|
||||||
|
"\x03low\x18\x06 \x01(\v2\r.alt.v1.PriceR\x03low\x12#\n" +
|
||||||
|
"\x05close\x18\a \x01(\v2\r.alt.v1.PriceR\x05close\x12(\n" +
|
||||||
|
"\x06volume\x18\b \x01(\v2\x10.alt.v1.QuantityR\x06volume\"\\\n" +
|
||||||
|
"\x16ListInstrumentsRequest\x12&\n" +
|
||||||
|
"\x06market\x18\x01 \x01(\x0e2\x0e.alt.v1.MarketR\x06market\x12\x1a\n" +
|
||||||
|
"\bprovider\x18\x02 \x01(\tR\bprovider\"O\n" +
|
||||||
|
"\x17ListInstrumentsResponse\x124\n" +
|
||||||
|
"\vinstruments\x18\x01 \x03(\v2\x12.alt.v1.InstrumentR\vinstruments\"\xa7\x01\n" +
|
||||||
|
"\x0fListBarsRequest\x12#\n" +
|
||||||
|
"\rinstrument_id\x18\x01 \x01(\tR\finstrumentId\x12/\n" +
|
||||||
|
"\ttimeframe\x18\x02 \x01(\x0e2\x11.alt.v1.TimeframeR\ttimeframe\x12 \n" +
|
||||||
|
"\ffrom_unix_ms\x18\x03 \x01(\x03R\n" +
|
||||||
|
"fromUnixMs\x12\x1c\n" +
|
||||||
|
"\n" +
|
||||||
|
"to_unix_ms\x18\x04 \x01(\x03R\btoUnixMs\"3\n" +
|
||||||
|
"\x10ListBarsResponse\x12\x1f\n" +
|
||||||
|
"\x04bars\x18\x01 \x03(\v2\v.alt.v1.BarR\x04barsBCZAgit.toki-labs.com/toki/alt/packages/contracts/gen/go/alt/v1;altv1b\x06proto3"
|
||||||
|
|
||||||
|
var (
|
||||||
|
file_alt_v1_market_proto_rawDescOnce sync.Once
|
||||||
|
file_alt_v1_market_proto_rawDescData []byte
|
||||||
|
)
|
||||||
|
|
||||||
|
func file_alt_v1_market_proto_rawDescGZIP() []byte {
|
||||||
|
file_alt_v1_market_proto_rawDescOnce.Do(func() {
|
||||||
|
file_alt_v1_market_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_alt_v1_market_proto_rawDesc), len(file_alt_v1_market_proto_rawDesc)))
|
||||||
|
})
|
||||||
|
return file_alt_v1_market_proto_rawDescData
|
||||||
|
}
|
||||||
|
|
||||||
|
var file_alt_v1_market_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
|
||||||
|
var file_alt_v1_market_proto_goTypes = []any{
|
||||||
|
(*Instrument)(nil), // 0: alt.v1.Instrument
|
||||||
|
(*Price)(nil), // 1: alt.v1.Price
|
||||||
|
(*Quantity)(nil), // 2: alt.v1.Quantity
|
||||||
|
(*Bar)(nil), // 3: alt.v1.Bar
|
||||||
|
(*ListInstrumentsRequest)(nil), // 4: alt.v1.ListInstrumentsRequest
|
||||||
|
(*ListInstrumentsResponse)(nil), // 5: alt.v1.ListInstrumentsResponse
|
||||||
|
(*ListBarsRequest)(nil), // 6: alt.v1.ListBarsRequest
|
||||||
|
(*ListBarsResponse)(nil), // 7: alt.v1.ListBarsResponse
|
||||||
|
nil, // 8: alt.v1.Instrument.ProviderSymbolsEntry
|
||||||
|
(Market)(0), // 9: alt.v1.Market
|
||||||
|
(Venue)(0), // 10: alt.v1.Venue
|
||||||
|
(Currency)(0), // 11: alt.v1.Currency
|
||||||
|
(*Decimal)(nil), // 12: alt.v1.Decimal
|
||||||
|
(Timeframe)(0), // 13: alt.v1.Timeframe
|
||||||
|
}
|
||||||
|
var file_alt_v1_market_proto_depIdxs = []int32{
|
||||||
|
9, // 0: alt.v1.Instrument.market:type_name -> alt.v1.Market
|
||||||
|
10, // 1: alt.v1.Instrument.venue:type_name -> alt.v1.Venue
|
||||||
|
11, // 2: alt.v1.Instrument.currency:type_name -> alt.v1.Currency
|
||||||
|
8, // 3: alt.v1.Instrument.provider_symbols:type_name -> alt.v1.Instrument.ProviderSymbolsEntry
|
||||||
|
11, // 4: alt.v1.Price.currency:type_name -> alt.v1.Currency
|
||||||
|
12, // 5: alt.v1.Price.amount:type_name -> alt.v1.Decimal
|
||||||
|
12, // 6: alt.v1.Quantity.amount:type_name -> alt.v1.Decimal
|
||||||
|
13, // 7: alt.v1.Bar.timeframe:type_name -> alt.v1.Timeframe
|
||||||
|
1, // 8: alt.v1.Bar.open:type_name -> alt.v1.Price
|
||||||
|
1, // 9: alt.v1.Bar.high:type_name -> alt.v1.Price
|
||||||
|
1, // 10: alt.v1.Bar.low:type_name -> alt.v1.Price
|
||||||
|
1, // 11: alt.v1.Bar.close:type_name -> alt.v1.Price
|
||||||
|
2, // 12: alt.v1.Bar.volume:type_name -> alt.v1.Quantity
|
||||||
|
9, // 13: alt.v1.ListInstrumentsRequest.market:type_name -> alt.v1.Market
|
||||||
|
0, // 14: alt.v1.ListInstrumentsResponse.instruments:type_name -> alt.v1.Instrument
|
||||||
|
13, // 15: alt.v1.ListBarsRequest.timeframe:type_name -> alt.v1.Timeframe
|
||||||
|
3, // 16: alt.v1.ListBarsResponse.bars:type_name -> alt.v1.Bar
|
||||||
|
17, // [17:17] is the sub-list for method output_type
|
||||||
|
17, // [17:17] is the sub-list for method input_type
|
||||||
|
17, // [17:17] is the sub-list for extension type_name
|
||||||
|
17, // [17:17] is the sub-list for extension extendee
|
||||||
|
0, // [0:17] is the sub-list for field type_name
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() { file_alt_v1_market_proto_init() }
|
||||||
|
func file_alt_v1_market_proto_init() {
|
||||||
|
if File_alt_v1_market_proto != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
file_alt_v1_common_proto_init()
|
||||||
|
type x struct{}
|
||||||
|
out := protoimpl.TypeBuilder{
|
||||||
|
File: protoimpl.DescBuilder{
|
||||||
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
|
RawDescriptor: unsafe.Slice(unsafe.StringData(file_alt_v1_market_proto_rawDesc), len(file_alt_v1_market_proto_rawDesc)),
|
||||||
|
NumEnums: 0,
|
||||||
|
NumMessages: 9,
|
||||||
|
NumExtensions: 0,
|
||||||
|
NumServices: 0,
|
||||||
|
},
|
||||||
|
GoTypes: file_alt_v1_market_proto_goTypes,
|
||||||
|
DependencyIndexes: file_alt_v1_market_proto_depIdxs,
|
||||||
|
MessageInfos: file_alt_v1_market_proto_msgTypes,
|
||||||
|
}.Build()
|
||||||
|
File_alt_v1_market_proto = out.File
|
||||||
|
file_alt_v1_market_proto_goTypes = nil
|
||||||
|
file_alt_v1_market_proto_depIdxs = nil
|
||||||
|
}
|
||||||
5
packages/contracts/gen/go/go.mod
Normal file
5
packages/contracts/gen/go/go.mod
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
module git.toki-labs.com/toki/alt/packages/contracts/gen/go
|
||||||
|
|
||||||
|
go 1.22
|
||||||
|
|
||||||
|
require google.golang.org/protobuf v1.36.5
|
||||||
6
packages/contracts/gen/go/go.sum
Normal file
6
packages/contracts/gen/go/go.sum
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
|
||||||
|
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
|
||||||
|
google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
|
||||||
|
|
@ -53,3 +53,12 @@ message BacktestResult {
|
||||||
Price starting_cash = 2;
|
Price starting_cash = 2;
|
||||||
Price ending_equity = 3;
|
Price ending_equity = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message GetBacktestResultRequest {
|
||||||
|
string run_id = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetBacktestResultResponse {
|
||||||
|
BacktestResult result = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,3 +44,15 @@ message ListInstrumentsRequest {
|
||||||
message ListInstrumentsResponse {
|
message ListInstrumentsResponse {
|
||||||
repeated Instrument instruments = 1;
|
repeated Instrument instruments = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message ListBarsRequest {
|
||||||
|
string instrument_id = 1;
|
||||||
|
Timeframe timeframe = 2;
|
||||||
|
int64 from_unix_ms = 3;
|
||||||
|
int64 to_unix_ms = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
message ListBarsResponse {
|
||||||
|
repeated Bar bars = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue