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
|
||||
- generated output 검증 명령
|
||||
|
||||
## 필수 기능
|
||||
## 기능
|
||||
|
||||
### Epic: [contracts] Contract schema and codegen
|
||||
|
||||
ALT application protobuf 계약과 generated output 검증 흐름을 묶는다.
|
||||
|
||||
- [ ] [schema-baseline] `common.proto`, `market.proto`, `backtest.proto`가 MVP payload 기준을 담는다.
|
||||
- [ ] [go-codegen] Go generated contract를 반복 생성할 수 있는 명령이 있다.
|
||||
- [ ] [dart-codegen] Flutter client가 사용할 Dart generated contract를 반복 생성할 수 있는 명령이 있다.
|
||||
- [ ] [go-codegen] Go generated contract를 반복 생성할 수 있는 명령이 있다. 검증: 문서화된 Go contract generation 명령이 로컬에서 실행된다.
|
||||
- [ ] [dart-codegen] Flutter client가 사용할 Dart generated contract를 반복 생성할 수 있는 명령이 있다. 검증: 문서화된 Dart contract generation 명령이 로컬에서 실행된다.
|
||||
- [ ] [parser-map] API/client에서 contract message parser map을 구성할 표준 위치와 패턴이 정해져 있다.
|
||||
- [ ] [compat-note] additive change, field number, versioning 기준이 contracts 문서에 정리되어 있다.
|
||||
- [ ] [contract-check] root 검증 또는 contracts 검증 명령이 schema/codegen drift를 감지한다.
|
||||
|
||||
## 완료 기준
|
||||
|
||||
- [ ] Go와 Dart contract generation 명령이 문서화되어 있고 로컬에서 실행된다.
|
||||
- [ ] generated output은 source schema와 함께 검증할 수 있다.
|
||||
- [ ] proto-socket transport proto와 ALT application proto의 책임이 문서에서 분리되어 있다.
|
||||
- [ ] `bin/test`와 `bin/lint`가 contract 변경 후 통과한다.
|
||||
- [ ] [compat-note] additive change, field number, versioning 기준과 proto-socket transport proto / ALT application proto 책임 분리가 contracts 문서에 정리되어 있다.
|
||||
- [ ] [contract-check] root 검증 또는 contracts 검증 명령이 schema/codegen drift를 감지한다. 검증: generated output을 source schema와 대조할 수 있고 `bin/test`, `bin/lint`가 contract 변경 후 통과한다.
|
||||
|
||||
## 완료 리뷰
|
||||
|
||||
- 상태: 없음
|
||||
- 요청일: 없음
|
||||
- 완료 근거: 아직 필수 기능과 완료 기준이 충족되지 않았다.
|
||||
- 완료 근거: 아직 기능 Task와 Task별 검증이 충족되지 않았다.
|
||||
- 리뷰 필요:
|
||||
- [ ] 사용자가 완료 결과를 확인했다
|
||||
- [ ] 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"
|
||||
source: hosted
|
||||
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:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -122,7 +130,7 @@ packages:
|
|||
source: hosted
|
||||
version: "7.0.1"
|
||||
fixnum:
|
||||
dependency: transitive
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: fixnum
|
||||
sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be
|
||||
|
|
@ -320,6 +328,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
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:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ dependencies:
|
|||
flutter_riverpod: ^3.3.1
|
||||
go_router: ^17.2.3
|
||||
protobuf: ^6.0.0
|
||||
fixnum: ^1.1.1
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
|
|
@ -48,6 +49,7 @@ dev_dependencies:
|
|||
# package. See that file for information about deactivating specific lint
|
||||
# rules and activating additional ones.
|
||||
flutter_lints: ^6.0.0
|
||||
protoc_plugin: ^25.0.0
|
||||
|
||||
# For information on the generic Dart part of this file, see the
|
||||
# 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)"
|
||||
|
||||
for module in \
|
||||
"$root/packages/contracts/gen/go" \
|
||||
"$root/packages/domain" \
|
||||
"$root/services/api" \
|
||||
"$root/services/worker" \
|
||||
|
|
|
|||
3
bin/test
3
bin/test
|
|
@ -3,7 +3,10 @@ set -euo pipefail
|
|||
|
||||
root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
"$root/bin/contracts-check"
|
||||
|
||||
for module in \
|
||||
"$root/packages/contracts/gen/go" \
|
||||
"$root/packages/domain" \
|
||||
"$root/services/api" \
|
||||
"$root/services/worker" \
|
||||
|
|
|
|||
1
go.work
1
go.work
|
|
@ -3,6 +3,7 @@ go 1.22
|
|||
use (
|
||||
../proto-socket/go
|
||||
./apps/cli
|
||||
./packages/contracts/gen/go
|
||||
./packages/domain
|
||||
./services/api
|
||||
./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
|
||||
- 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
|
||||
|
||||
## 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 ending_equity = 3;
|
||||
}
|
||||
|
||||
message GetBacktestResultRequest {
|
||||
string run_id = 1;
|
||||
}
|
||||
|
||||
message GetBacktestResultResponse {
|
||||
BacktestResult result = 1;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -44,3 +44,15 @@ message ListInstrumentsRequest {
|
|||
message ListInstrumentsResponse {
|
||||
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