@polyester/sdk 0.15.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/dist/gen/ledger/read/v1/ledger_read_pb.d.ts +8 -0
- package/dist/gen/ledger/read/v1/ledger_read_pb.d.ts.map +1 -1
- package/dist/gen/ledger/read/v1/ledger_read_pb.js +1 -1
- package/dist/gen/ledger/read/v1/ledger_read_pb.js.map +1 -1
- package/dist/services/orders/orders-risk.schemas.js +3 -3
- package/dist/services/orders/orders-risk.schemas.js.map +1 -1
- package/dist/services/subaccounts/index.d.ts +2 -2
- package/dist/services/subaccounts/subaccounts.codecs.js +4 -11
- package/dist/services/subaccounts/subaccounts.codecs.js.map +1 -1
- package/dist/services/subaccounts/subaccounts.d.ts +2 -6
- package/dist/services/subaccounts/subaccounts.d.ts.map +1 -1
- package/dist/services/subaccounts/subaccounts.js +2 -16
- package/dist/services/subaccounts/subaccounts.js.map +1 -1
- package/dist/services/subaccounts/subaccounts.schemas.d.ts +10 -14
- package/dist/services/subaccounts/subaccounts.schemas.d.ts.map +1 -1
- package/dist/services/subaccounts/subaccounts.schemas.js +1 -5
- package/dist/services/subaccounts/subaccounts.schemas.js.map +1 -1
- package/dist/services/transfers/transfers.schemas.d.ts +7 -0
- package/dist/services/transfers/transfers.schemas.d.ts.map +1 -1
- package/dist/services/transfers/transfers.schemas.js +2 -1
- package/dist/services/transfers/transfers.schemas.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @polyester/sdk
|
|
2
2
|
|
|
3
|
+
## 0.16.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- **Breaking:** Remove `subaccounts.delete()`, the `DeleteSubaccountInput` type and schema, and the `"deleted"` subaccount status. `auth.v1.SubaccountService` exposes no delete RPC, and both `Subaccount.status` and `SubaccountUpdateSpec.status` document only `"active"` and `"disabled"`, so `delete()` was sending a `status: "deleted"` update the backend does not accept. Use `subaccounts.update({ status: "disabled" })` instead; `status` on reads and updates is now `"active" | "disabled"`. ([#101](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/101))
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Omit attached-risk legs whose only content is a `not_configured` runtime state, so consumers do not mistake absent risk configuration for a configured leg. ([#103](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/103))
|
|
12
|
+
|
|
13
|
+
## 0.15.1
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- feat(transfers): expose external chain IDs on transfer source and destination details. ([#99](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/99))
|
|
18
|
+
|
|
3
19
|
## 0.15.0
|
|
4
20
|
|
|
5
21
|
### Minor Changes
|
|
@@ -511,6 +511,14 @@ type TransferSide = Message<"ledger.read.v1.TransferSide"> & {
|
|
|
511
511
|
* @generated from field: string address = 3;
|
|
512
512
|
*/
|
|
513
513
|
address: string;
|
|
514
|
+
/**
|
|
515
|
+
* PolyChain-registered external network identifier for EXTERNAL_ADDRESS.
|
|
516
|
+
* This matches chain.zipper.v1.ChainConfig.chain_id and is not the chain's
|
|
517
|
+
* native identifier (for example, an EIP-155 id) or the Polyester chain id.
|
|
518
|
+
*
|
|
519
|
+
* @generated from field: optional uint32 chain_id = 4;
|
|
520
|
+
*/
|
|
521
|
+
chainId?: number | undefined;
|
|
514
522
|
};
|
|
515
523
|
/**
|
|
516
524
|
* Describes the message ledger.read.v1.TransferSide.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger_read_pb.d.ts","names":[],"sources":["../../../../../src/gen/ledger/read/v1/ledger_read_pb.ts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ledger_read_pb.d.ts","names":[],"sources":["../../../../../src/gen/ledger/read/v1/ledger_read_pb.ts"],"mappings":"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"}
|
|
@@ -37,7 +37,7 @@ var ledger_read_pb_exports = /* @__PURE__ */ __exportAll({
|
|
|
37
37
|
/**
|
|
38
38
|
* Describes the file ledger/read/v1/ledger_read.proto.
|
|
39
39
|
*/
|
|
40
|
-
const file_ledger_read_v1_ledger_read = /*@__PURE__*/ fileDesc("CiBsZWRnZXIvcmVhZC92MS9sZWRnZXJfcmVhZC5wcm90bxIObGVkZ2VyLnJlYWQudjEiQgoSR2V0QmFsYW5jZXNSZXF1ZXN0EhoKDXN1YmFjY291bnRfaWQYASABKAZIAIgBAUIQCg5fc3ViYWNjb3VudF9pZCL/
|
|
40
|
+
const file_ledger_read_v1_ledger_read = /*@__PURE__*/ fileDesc("CiBsZWRnZXIvcmVhZC92MS9sZWRnZXJfcmVhZC5wcm90bxIObGVkZ2VyLnJlYWQudjEiQgoSR2V0QmFsYW5jZXNSZXF1ZXN0EhoKDXN1YmFjY291bnRfaWQYASABKAZIAIgBAUIQCg5fc3ViYWNjb3VudF9pZCL/AQoMQXNzZXRCYWxhbmNlEhAKCGFzc2V0X2lkGAEgASgNEigKB3RyYWRpbmcYAiABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EigKB2Z1bmRpbmcYAyABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EikKCHJlc2VydmVkGAQgASgLMhcucG9seWVzdGVyLnR5cGUudjEuVTEyOBIqCglhdmFpbGFibGUYBSABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EhgKEHRyYWRpbmdfcmV2aXNpb24YBiABKAQSGAoQZnVuZGluZ19yZXZpc2lvbhgHIAEoBCJFChNHZXRCYWxhbmNlc1Jlc3BvbnNlEi4KCGJhbGFuY2VzGAEgAygLMhwubGVkZ2VyLnJlYWQudjEuQXNzZXRCYWxhbmNlIrYBChhHZXRCYWxhbmNlSGlzdG9yeVJlcXVlc3QSGgoNc3ViYWNjb3VudF9pZBgBIAEoBkgAiAEBEi0KBXJhbmdlGAIgASgOMhwubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVJhbmdlQgASDgoGbGVkZ2VyGAMgASgNEi0KDWFjY291bnRfY29kZXMYBCADKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGVCEAoOX3N1YmFjY291bnRfaWQiYgoNQmFsYW5jZVNlcmllcxIQCghhc3NldF9pZBgBIAEoDRIsCgxhY2NvdW50X2NvZGUYAiABKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGUSEQoJYmFsYW5jZV9xGAMgAygEIsEBChlHZXRCYWxhbmNlSGlzdG9yeVJlc3BvbnNlEisKBXJhbmdlGAEgASgOMhwubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVJhbmdlEg4KBmJ1Y2tldBgCIAEoCRIUCgxzdGFydF90c19zZWMYAyABKAcSEgoKZW5kX3RzX3NlYxgEIAEoBxIOCgZwb2ludHMYBSABKA0SLQoGc2VyaWVzGAYgAygLMh0ubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVNlcmllcyI1Cg9BY2NvdW50R3JvdXBpbmcSFAoMYWNjb3VudF9jb2RlGAEgASgNEgwKBG5hbWUYAiABKAkiKwoNQXNzZXRHcm91cGluZxIKCgJpZBgBIAEoDRIOCgZzeW1ib2wYAiABKAki3AEKHUdldEVxdWl0eUhpc3RvcnlTZXJpZXNSZXF1ZXN0EhoKDXN1YmFjY291bnRfaWQYASABKAZIAIgBARItCgVyYW5nZRgCIAEoDjIcLmxlZGdlci5yZWFkLnYxLkJhbGFuY2VSYW5nZUIAEi0KDWFjY291bnRfY29kZXMYBCADKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGUSLwoIZ3JvdXBfYnkYBSABKA4yHS5sZWRnZXIucmVhZC52MS5FcXVpdHlHcm91cEJ5QhAKDl9zdWJhY2NvdW50X2lkIpABCgxFcXVpdHlTZXJpZXMSMgoHYWNjb3VudBgBIAEoCzIfLmxlZGdlci5yZWFkLnYxLkFjY291bnRHcm91cGluZ0gAEi4KBWFzc2V0GAMgASgLMh0ubGVkZ2VyLnJlYWQudjEuQXNzZXRHcm91cGluZ0gAEhAKCGVxdWl0eV9xGAIgAygSQgoKCGdyb3VwaW5nIvABCh5HZXRFcXVpdHlIaXN0b3J5U2VyaWVzUmVzcG9uc2USKwoFcmFuZ2UYASABKA4yHC5sZWRnZXIucmVhZC52MS5CYWxhbmNlUmFuZ2USDgoGYnVja2V0GAIgASgJEhQKDHN0YXJ0X3RzX3NlYxgDIAEoBxISCgplbmRfdHNfc2VjGAQgASgHEhMKC3F1b3RlX2Fzc2V0GAYgASgJEg4KBnBvaW50cxgHIAEoDRIsCgZzZXJpZXMYCCADKAsyHC5sZWRnZXIucmVhZC52MS5FcXVpdHlTZXJpZXMSFAoMYnRjX3ByaWNlc19xGAogAygDIucBChRMaXN0VHJhbnNmZXJzUmVxdWVzdBIaCg1zdWJhY2NvdW50X2lkGAEgASgGSACIAQESDwoFbGltaXQYAiABKA1CABIQCghyZXZlcnNlZBgDIAEoCBIRCgl0c19taW5fdXMYBCABKAQSEQoJdHNfbWF4X3VzGAUgASgEEjAKDXRyYW5zZmVyX2NvZGUYBiABKA4yFy5sZWRnZXIudjEuVHJhbnNmZXJDb2RlQgASDgoGbGVkZ2VyGAcgASgNEhQKCnBhZ2VfdG9rZW4YCSABKAlCADoAQhAKDl9zdWJhY2NvdW50X2lkIpsBCgxUcmFuc2ZlclNpZGUSLgoEa2luZBgBIAEoDjIgLmxlZGdlci5yZWFkLnYxLlRyYW5zZmVyU2lkZUtpbmQSFwoKYWNjb3VudF9pZBgCIAEoBkgAiAEBEg8KB2FkZHJlc3MYAyABKAkSFQoIY2hhaW5faWQYBCABKA1IAYgBAUINCgtfYWNjb3VudF9pZEILCglfY2hhaW5faWQiggMKC1RyYW5zZmVyUm93EhAKCGFzc2V0X2lkGAEgASgNEisKCmFtb3VudF9lMTgYAiABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4Ei4KDXRyYW5zZmVyX2NvZGUYAyABKA4yFy5sZWRnZXIudjEuVHJhbnNmZXJDb2RlEiwKDGFjY291bnRfY29kZRgEIAEoDjIWLmxlZGdlci52MS5BY2NvdW50Q29kZRINCgV0c191cxgFIAEoBBIyChFiYWxhbmNlX2FmdGVyX2UxOBgJIAEoCzIXLnBvbHllc3Rlci50eXBlLnYxLlUxMjgSEAoIaXNfZGViaXQYCiABKAgSDwoHbGlua19pZBgLIAEoBBIPCgdmbG93X2lkGAwgASgJEiwKBnNvdXJjZRgNIAEoCzIcLmxlZGdlci5yZWFkLnYxLlRyYW5zZmVyU2lkZRIxCgtkZXN0aW5hdGlvbhgOIAEoCzIcLmxlZGdlci5yZWFkLnYxLlRyYW5zZmVyU2lkZSJiChVMaXN0VHJhbnNmZXJzUmVzcG9uc2USLgoJdHJhbnNmZXJzGAEgAygLMhsubGVkZ2VyLnJlYWQudjEuVHJhbnNmZXJSb3cSGQoPbmV4dF9wYWdlX3Rva2VuGAMgASgJQgAieQoQTGlzdEhvbGRzUmVxdWVzdBIaCg1zdWJhY2NvdW50X2lkGAEgASgGSACIAQESDwoFbGltaXQYAiABKA1CABIQCghyZXZlcnNlZBgDIAEoCBIUCgpwYWdlX3Rva2VuGAQgASgJQgBCEAoOX3N1YmFjY291bnRfaWQieQoHSG9sZFJvdxIPCgdob2xkX2lkGAEgASgGEjQKE2Ftb3VudF9yZXNlcnZlZF9lMTgYAiABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EhAKCGFzc2V0X2lkGAMgASgNEhUKDWV4cGlyZXNfYXRfbnMYBCABKAQiVgoRTGlzdEhvbGRzUmVzcG9uc2USJgoFaG9sZHMYASADKAsyFy5sZWRnZXIucmVhZC52MS5Ib2xkUm93EhkKD25leHRfcGFnZV90b2tlbhgCIAEoCUIAIjYKC0Vycm9yRGV0YWlsEicKBGNvZGUYASABKA4yGS5sZWRnZXIucmVhZC52MS5FcnJvckNvZGUqbQoMQmFsYW5jZVJhbmdlEhUKEVJBTkdFX1VOU1BFQ0lGSUVEEAASCQoFREFZXzEQARIJCgVEQVlfNxACEgoKBkRBWV8zMBADEgoKBkRBWV85MBAEEgsKB0RBWV8xODAQBRILCgdEQVlfMzY1EAYqUwoNRXF1aXR5R3JvdXBCeRIYChRHUk9VUF9CWV9VTlNQRUNJRklFRBAAEhQKEEdST1VQX0JZX0FDQ09VTlQQARISCg5HUk9VUF9CWV9BU1NFVBACKrUBChBUcmFuc2ZlclNpZGVLaW5kEiIKHlRSQU5TRkVSX1NJREVfS0lORF9VTlNQRUNJRklFRBAAEhMKD0ZVTkRJTkdfQUNDT1VOVBABEhMKD1RSQURJTkdfQUNDT1VOVBACEhQKEEVYVEVSTkFMX0FERFJFU1MQAxIYChRQUklWQVRFX0NPVU5URVJQQVJUWRAEEg8KC0ZFRV9BQ0NPVU5UEAUSEgoOU1lTVEVNX0FDQ09VTlQQBiryAgoJRXJyb3JDb2RlEhoKFkVSUk9SX0NPREVfVU5TUEVDSUZJRUQQABIaChZFUlJPUl9DT0RFX0JBRF9SRVFVRVNUEAESHgoaRVJST1JfQ09ERV9VTkFVVEhFTlRJQ0FURUQQAhIgChxFUlJPUl9DT0RFX1BFUk1JU1NJT05fREVOSUVEEAMSGAoURVJST1JfQ09ERV9OT1RfRk9VTkQQBBIhCh1FUlJPUl9DT0RFX01JU1NJTkdfQUNDT1VOVF9JRBAFEiEKHUVSUk9SX0NPREVfSU5WQUxJRF9BQ0NPVU5UX0lEEAYSHQoZRVJST1JfQ09ERV9NSVNTSU5HX1dBTExFVBAHEiwKKEVSUk9SX0NPREVfV0FMTEVUX1JFU09MVVRJT05fVU5BVkFJTEFCTEUQCBIfChtFUlJPUl9DT0RFX1dBTExFVF9OT1RfRk9VTkQQCRIdChlFUlJPUl9DT0RFX1VQU1RSRUFNX0VSUk9SEAoyiAQKEUxlZGdlclJlYWRTZXJ2aWNlEmoKEUdldEJhbGFuY2VIaXN0b3J5EigubGVkZ2VyLnJlYWQudjEuR2V0QmFsYW5jZUhpc3RvcnlSZXF1ZXN0GikubGVkZ2VyLnJlYWQudjEuR2V0QmFsYW5jZUhpc3RvcnlSZXNwb25zZSIAEnkKFkdldEVxdWl0eUhpc3RvcnlTZXJpZXMSLS5sZWRnZXIucmVhZC52MS5HZXRFcXVpdHlIaXN0b3J5U2VyaWVzUmVxdWVzdBouLmxlZGdlci5yZWFkLnYxLkdldEVxdWl0eUhpc3RvcnlTZXJpZXNSZXNwb25zZSIAEl4KDUxpc3RUcmFuc2ZlcnMSJC5sZWRnZXIucmVhZC52MS5MaXN0VHJhbnNmZXJzUmVxdWVzdBolLmxlZGdlci5yZWFkLnYxLkxpc3RUcmFuc2ZlcnNSZXNwb25zZSIAElIKCUxpc3RIb2xkcxIgLmxlZGdlci5yZWFkLnYxLkxpc3RIb2xkc1JlcXVlc3QaIS5sZWRnZXIucmVhZC52MS5MaXN0SG9sZHNSZXNwb25zZSIAElgKC0dldEJhbGFuY2VzEiIubGVkZ2VyLnJlYWQudjEuR2V0QmFsYW5jZXNSZXF1ZXN0GiMubGVkZ2VyLnJlYWQudjEuR2V0QmFsYW5jZXNSZXNwb25zZSIAQkdaRWdpdGh1Yi5jb20vRmFicmljLUxhYnMvcG9seWVzdGVyLXNkay1nby9nZW4vbGVkZ2VyL3JlYWQvdjE7bGVkZ2VycmR2MWIGcHJvdG8z", [file_ledger_v1_catalog, file_polyester_type_v1_u128]);
|
|
41
41
|
/**
|
|
42
42
|
* Describes the message ledger.read.v1.GetBalancesRequest.
|
|
43
43
|
* Use `create(GetBalancesRequestSchema)` to create a new message.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger_read_pb.js","names":[],"sources":["../../../../../src/gen/ledger/read/v1/ledger_read_pb.ts"],"sourcesContent":["// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file ledger/read/v1/ledger_read.proto (package ledger.read.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { AccountCode, TransferCode } from \"../../v1/catalog_pb.js\";\nimport { file_ledger_v1_catalog } from \"../../v1/catalog_pb.js\";\nimport type { U128 } from \"../../../polyester/type/v1/u128_pb.js\";\nimport { file_polyester_type_v1_u128 } from \"../../../polyester/type/v1/u128_pb.js\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file ledger/read/v1/ledger_read.proto.\n */\nexport const file_ledger_read_v1_ledger_read: GenFile = /*@__PURE__*/\n fileDesc(\"CiBsZWRnZXIvcmVhZC92MS9sZWRnZXJfcmVhZC5wcm90bxIObGVkZ2VyLnJlYWQudjEiQgoSR2V0QmFsYW5jZXNSZXF1ZXN0EhoKDXN1YmFjY291bnRfaWQYASABKAZIAIgBAUIQCg5fc3ViYWNjb3VudF9pZCL/AQoMQXNzZXRCYWxhbmNlEhAKCGFzc2V0X2lkGAEgASgNEigKB3RyYWRpbmcYAiABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EigKB2Z1bmRpbmcYAyABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EikKCHJlc2VydmVkGAQgASgLMhcucG9seWVzdGVyLnR5cGUudjEuVTEyOBIqCglhdmFpbGFibGUYBSABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EhgKEHRyYWRpbmdfcmV2aXNpb24YBiABKAQSGAoQZnVuZGluZ19yZXZpc2lvbhgHIAEoBCJFChNHZXRCYWxhbmNlc1Jlc3BvbnNlEi4KCGJhbGFuY2VzGAEgAygLMhwubGVkZ2VyLnJlYWQudjEuQXNzZXRCYWxhbmNlIrYBChhHZXRCYWxhbmNlSGlzdG9yeVJlcXVlc3QSGgoNc3ViYWNjb3VudF9pZBgBIAEoBkgAiAEBEi0KBXJhbmdlGAIgASgOMhwubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVJhbmdlQgASDgoGbGVkZ2VyGAMgASgNEi0KDWFjY291bnRfY29kZXMYBCADKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGVCEAoOX3N1YmFjY291bnRfaWQiYgoNQmFsYW5jZVNlcmllcxIQCghhc3NldF9pZBgBIAEoDRIsCgxhY2NvdW50X2NvZGUYAiABKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGUSEQoJYmFsYW5jZV9xGAMgAygEIsEBChlHZXRCYWxhbmNlSGlzdG9yeVJlc3BvbnNlEisKBXJhbmdlGAEgASgOMhwubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVJhbmdlEg4KBmJ1Y2tldBgCIAEoCRIUCgxzdGFydF90c19zZWMYAyABKAcSEgoKZW5kX3RzX3NlYxgEIAEoBxIOCgZwb2ludHMYBSABKA0SLQoGc2VyaWVzGAYgAygLMh0ubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVNlcmllcyI1Cg9BY2NvdW50R3JvdXBpbmcSFAoMYWNjb3VudF9jb2RlGAEgASgNEgwKBG5hbWUYAiABKAkiKwoNQXNzZXRHcm91cGluZxIKCgJpZBgBIAEoDRIOCgZzeW1ib2wYAiABKAki3AEKHUdldEVxdWl0eUhpc3RvcnlTZXJpZXNSZXF1ZXN0EhoKDXN1YmFjY291bnRfaWQYASABKAZIAIgBARItCgVyYW5nZRgCIAEoDjIcLmxlZGdlci5yZWFkLnYxLkJhbGFuY2VSYW5nZUIAEi0KDWFjY291bnRfY29kZXMYBCADKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGUSLwoIZ3JvdXBfYnkYBSABKA4yHS5sZWRnZXIucmVhZC52MS5FcXVpdHlHcm91cEJ5QhAKDl9zdWJhY2NvdW50X2lkIpABCgxFcXVpdHlTZXJpZXMSMgoHYWNjb3VudBgBIAEoCzIfLmxlZGdlci5yZWFkLnYxLkFjY291bnRHcm91cGluZ0gAEi4KBWFzc2V0GAMgASgLMh0ubGVkZ2VyLnJlYWQudjEuQXNzZXRHcm91cGluZ0gAEhAKCGVxdWl0eV9xGAIgAygSQgoKCGdyb3VwaW5nIvABCh5HZXRFcXVpdHlIaXN0b3J5U2VyaWVzUmVzcG9uc2USKwoFcmFuZ2UYASABKA4yHC5sZWRnZXIucmVhZC52MS5CYWxhbmNlUmFuZ2USDgoGYnVja2V0GAIgASgJEhQKDHN0YXJ0X3RzX3NlYxgDIAEoBxISCgplbmRfdHNfc2VjGAQgASgHEhMKC3F1b3RlX2Fzc2V0GAYgASgJEg4KBnBvaW50cxgHIAEoDRIsCgZzZXJpZXMYCCADKAsyHC5sZWRnZXIucmVhZC52MS5FcXVpdHlTZXJpZXMSFAoMYnRjX3ByaWNlc19xGAogAygDIucBChRMaXN0VHJhbnNmZXJzUmVxdWVzdBIaCg1zdWJhY2NvdW50X2lkGAEgASgGSACIAQESDwoFbGltaXQYAiABKA1CABIQCghyZXZlcnNlZBgDIAEoCBIRCgl0c19taW5fdXMYBCABKAQSEQoJdHNfbWF4X3VzGAUgASgEEjAKDXRyYW5zZmVyX2NvZGUYBiABKA4yFy5sZWRnZXIudjEuVHJhbnNmZXJDb2RlQgASDgoGbGVkZ2VyGAcgASgNEhQKCnBhZ2VfdG9rZW4YCSABKAlCADoAQhAKDl9zdWJhY2NvdW50X2lkIncKDFRyYW5zZmVyU2lkZRIuCgRraW5kGAEgASgOMiAubGVkZ2VyLnJlYWQudjEuVHJhbnNmZXJTaWRlS2luZBIXCgphY2NvdW50X2lkGAIgASgGSACIAQESDwoHYWRkcmVzcxgDIAEoCUINCgtfYWNjb3VudF9pZCKCAwoLVHJhbnNmZXJSb3cSEAoIYXNzZXRfaWQYASABKA0SKwoKYW1vdW50X2UxOBgCIAEoCzIXLnBvbHllc3Rlci50eXBlLnYxLlUxMjgSLgoNdHJhbnNmZXJfY29kZRgDIAEoDjIXLmxlZGdlci52MS5UcmFuc2ZlckNvZGUSLAoMYWNjb3VudF9jb2RlGAQgASgOMhYubGVkZ2VyLnYxLkFjY291bnRDb2RlEg0KBXRzX3VzGAUgASgEEjIKEWJhbGFuY2VfYWZ0ZXJfZTE4GAkgASgLMhcucG9seWVzdGVyLnR5cGUudjEuVTEyOBIQCghpc19kZWJpdBgKIAEoCBIPCgdsaW5rX2lkGAsgASgEEg8KB2Zsb3dfaWQYDCABKAkSLAoGc291cmNlGA0gASgLMhwubGVkZ2VyLnJlYWQudjEuVHJhbnNmZXJTaWRlEjEKC2Rlc3RpbmF0aW9uGA4gASgLMhwubGVkZ2VyLnJlYWQudjEuVHJhbnNmZXJTaWRlImIKFUxpc3RUcmFuc2ZlcnNSZXNwb25zZRIuCgl0cmFuc2ZlcnMYASADKAsyGy5sZWRnZXIucmVhZC52MS5UcmFuc2ZlclJvdxIZCg9uZXh0X3BhZ2VfdG9rZW4YAyABKAlCACJ5ChBMaXN0SG9sZHNSZXF1ZXN0EhoKDXN1YmFjY291bnRfaWQYASABKAZIAIgBARIPCgVsaW1pdBgCIAEoDUIAEhAKCHJldmVyc2VkGAMgASgIEhQKCnBhZ2VfdG9rZW4YBCABKAlCAEIQCg5fc3ViYWNjb3VudF9pZCJ5CgdIb2xkUm93Eg8KB2hvbGRfaWQYASABKAYSNAoTYW1vdW50X3Jlc2VydmVkX2UxOBgCIAEoCzIXLnBvbHllc3Rlci50eXBlLnYxLlUxMjgSEAoIYXNzZXRfaWQYAyABKA0SFQoNZXhwaXJlc19hdF9ucxgEIAEoBCJWChFMaXN0SG9sZHNSZXNwb25zZRImCgVob2xkcxgBIAMoCzIXLmxlZGdlci5yZWFkLnYxLkhvbGRSb3cSGQoPbmV4dF9wYWdlX3Rva2VuGAIgASgJQgAiNgoLRXJyb3JEZXRhaWwSJwoEY29kZRgBIAEoDjIZLmxlZGdlci5yZWFkLnYxLkVycm9yQ29kZSptCgxCYWxhbmNlUmFuZ2USFQoRUkFOR0VfVU5TUEVDSUZJRUQQABIJCgVEQVlfMRABEgkKBURBWV83EAISCgoGREFZXzMwEAMSCgoGREFZXzkwEAQSCwoHREFZXzE4MBAFEgsKB0RBWV8zNjUQBipTCg1FcXVpdHlHcm91cEJ5EhgKFEdST1VQX0JZX1VOU1BFQ0lGSUVEEAASFAoQR1JPVVBfQllfQUNDT1VOVBABEhIKDkdST1VQX0JZX0FTU0VUEAIqtQEKEFRyYW5zZmVyU2lkZUtpbmQSIgoeVFJBTlNGRVJfU0lERV9LSU5EX1VOU1BFQ0lGSUVEEAASEwoPRlVORElOR19BQ0NPVU5UEAESEwoPVFJBRElOR19BQ0NPVU5UEAISFAoQRVhURVJOQUxfQUREUkVTUxADEhgKFFBSSVZBVEVfQ09VTlRFUlBBUlRZEAQSDwoLRkVFX0FDQ09VTlQQBRISCg5TWVNURU1fQUNDT1VOVBAGKvICCglFcnJvckNvZGUSGgoWRVJST1JfQ09ERV9VTlNQRUNJRklFRBAAEhoKFkVSUk9SX0NPREVfQkFEX1JFUVVFU1QQARIeChpFUlJPUl9DT0RFX1VOQVVUSEVOVElDQVRFRBACEiAKHEVSUk9SX0NPREVfUEVSTUlTU0lPTl9ERU5JRUQQAxIYChRFUlJPUl9DT0RFX05PVF9GT1VORBAEEiEKHUVSUk9SX0NPREVfTUlTU0lOR19BQ0NPVU5UX0lEEAUSIQodRVJST1JfQ09ERV9JTlZBTElEX0FDQ09VTlRfSUQQBhIdChlFUlJPUl9DT0RFX01JU1NJTkdfV0FMTEVUEAcSLAooRVJST1JfQ09ERV9XQUxMRVRfUkVTT0xVVElPTl9VTkFWQUlMQUJMRRAIEh8KG0VSUk9SX0NPREVfV0FMTEVUX05PVF9GT1VORBAJEh0KGUVSUk9SX0NPREVfVVBTVFJFQU1fRVJST1IQCjKIBAoRTGVkZ2VyUmVhZFNlcnZpY2USagoRR2V0QmFsYW5jZUhpc3RvcnkSKC5sZWRnZXIucmVhZC52MS5HZXRCYWxhbmNlSGlzdG9yeVJlcXVlc3QaKS5sZWRnZXIucmVhZC52MS5HZXRCYWxhbmNlSGlzdG9yeVJlc3BvbnNlIgASeQoWR2V0RXF1aXR5SGlzdG9yeVNlcmllcxItLmxlZGdlci5yZWFkLnYxLkdldEVxdWl0eUhpc3RvcnlTZXJpZXNSZXF1ZXN0Gi4ubGVkZ2VyLnJlYWQudjEuR2V0RXF1aXR5SGlzdG9yeVNlcmllc1Jlc3BvbnNlIgASXgoNTGlzdFRyYW5zZmVycxIkLmxlZGdlci5yZWFkLnYxLkxpc3RUcmFuc2ZlcnNSZXF1ZXN0GiUubGVkZ2VyLnJlYWQudjEuTGlzdFRyYW5zZmVyc1Jlc3BvbnNlIgASUgoJTGlzdEhvbGRzEiAubGVkZ2VyLnJlYWQudjEuTGlzdEhvbGRzUmVxdWVzdBohLmxlZGdlci5yZWFkLnYxLkxpc3RIb2xkc1Jlc3BvbnNlIgASWAoLR2V0QmFsYW5jZXMSIi5sZWRnZXIucmVhZC52MS5HZXRCYWxhbmNlc1JlcXVlc3QaIy5sZWRnZXIucmVhZC52MS5HZXRCYWxhbmNlc1Jlc3BvbnNlIgBCR1pFZ2l0aHViLmNvbS9GYWJyaWMtTGFicy9wb2x5ZXN0ZXItc2RrLWdvL2dlbi9sZWRnZXIvcmVhZC92MTtsZWRnZXJyZHYxYgZwcm90bzM=\", [file_ledger_v1_catalog, file_polyester_type_v1_u128]);\n\n/**\n * @generated from message ledger.read.v1.GetBalancesRequest\n */\nexport type GetBalancesRequest = Message<\"ledger.read.v1.GetBalancesRequest\"> & {\n /**\n * Optional sub-account to scope balances to. If omitted, balances are\n * returned for the authenticated root account derived from the JWT or API\n * key. The logical account id itself is always derived from the caller's JWT\n * or API key, not from this payload.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n};\n\n/**\n * Describes the message ledger.read.v1.GetBalancesRequest.\n * Use `create(GetBalancesRequestSchema)` to create a new message.\n */\nexport const GetBalancesRequestSchema: GenMessage<GetBalancesRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 0);\n\n/**\n * Fixed-size representation for balances (for Protobuf/WS clients).\n * Uses common U128 messages for amounts to keep schema tidy and consistent.\n *\n * @generated from message ledger.read.v1.AssetBalance\n */\nexport type AssetBalance = Message<\"ledger.read.v1.AssetBalance\"> & {\n /**\n * Public unified asset id. Resolve symbol from SpotConfig; U128 amounts in\n * this message always use fixed 18-decimal ledger scale.\n *\n * @generated from field: uint32 asset_id = 1;\n */\n assetId: number;\n\n /**\n * Trading balance at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 trading = 2;\n */\n trading?: U128 | undefined;\n\n /**\n * Funding balance at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 funding = 3;\n */\n funding?: U128 | undefined;\n\n /**\n * Reserved amount in the trading bucket at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 reserved = 4;\n */\n reserved?: U128 | undefined;\n\n /**\n * Amount currently available for new trading activity at fixed 18-decimal\n * ledger scale. This value already accounts for active reservations.\n *\n * @generated from field: polyester.type.v1.U128 available = 5;\n */\n available?: U128 | undefined;\n\n /**\n * Opaque monotonic revision for the atomic trading, reserved, and available\n * values. Higher means newer; zero means no trading state has been observed.\n *\n * @generated from field: uint64 trading_revision = 6;\n */\n tradingRevision: bigint;\n\n /**\n * Opaque monotonic revision for the funding value. Higher means newer; zero\n * means no funding state has been observed.\n *\n * @generated from field: uint64 funding_revision = 7;\n */\n fundingRevision: bigint;\n};\n\n/**\n * Describes the message ledger.read.v1.AssetBalance.\n * Use `create(AssetBalanceSchema)` to create a new message.\n */\nexport const AssetBalanceSchema: GenMessage<AssetBalance> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 1);\n\n/**\n * @generated from message ledger.read.v1.GetBalancesResponse\n */\nexport type GetBalancesResponse = Message<\"ledger.read.v1.GetBalancesResponse\"> & {\n /**\n * One entry for every supported unified asset, including assets with zero\n * balances. Sorted by available trading amount (highest first), then by\n * asset symbol alphabetically.\n *\n * @generated from field: repeated ledger.read.v1.AssetBalance balances = 1;\n */\n balances: AssetBalance[];\n};\n\n/**\n * Describes the message ledger.read.v1.GetBalancesResponse.\n * Use `create(GetBalancesResponseSchema)` to create a new message.\n */\nexport const GetBalancesResponseSchema: GenMessage<GetBalancesResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 2);\n\n/**\n * @generated from message ledger.read.v1.GetBalanceHistoryRequest\n */\nexport type GetBalanceHistoryRequest = Message<\"ledger.read.v1.GetBalanceHistoryRequest\"> & {\n /**\n * Optional sub-account to scope balances to. If omitted, balances are\n * returned for the authenticated root account derived from the JWT or API\n * key. The logical account id itself is always derived from the caller's JWT\n * or API key, not from this payload.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n\n /**\n * History window to return. When unset/UNSPECIFIED, defaults to 1D.\n *\n * @generated from field: ledger.read.v1.BalanceRange range = 2;\n */\n range: BalanceRange;\n\n /**\n * Optional public asset filter. When unset/0, returns all assets.\n *\n * @generated from field: uint32 ledger = 3;\n */\n ledger: number;\n\n /**\n * Optional subset of account buckets to return. When empty, returns all\n * account buckets.\n *\n * @generated from field: repeated ledger.v1.AccountCode account_codes = 4;\n */\n accountCodes: AccountCode[];\n};\n\n/**\n * Describes the message ledger.read.v1.GetBalanceHistoryRequest.\n * Use `create(GetBalanceHistoryRequestSchema)` to create a new message.\n */\nexport const GetBalanceHistoryRequestSchema: GenMessage<GetBalanceHistoryRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 3);\n\n/**\n * Columnar balance series payload (scaled integers).\n * REST renders decimal strings from these values.\n *\n * @generated from message ledger.read.v1.BalanceSeries\n */\nexport type BalanceSeries = Message<\"ledger.read.v1.BalanceSeries\"> & {\n /**\n * public unified asset id\n *\n * @generated from field: uint32 asset_id = 1;\n */\n assetId: number;\n\n /**\n * account bucket\n *\n * @generated from field: ledger.v1.AccountCode account_code = 2;\n */\n accountCode: AccountCode;\n\n /**\n * Chart balance in asset units scaled by 1e7 (7 decimals).\n * Values are downscaled from 18-decimal ledger balances for compact charting\n * and align 1:1 with implicit timestamps.\n *\n * @generated from field: repeated uint64 balance_q = 3;\n */\n balanceQ: bigint[];\n};\n\n/**\n * Describes the message ledger.read.v1.BalanceSeries.\n * Use `create(BalanceSeriesSchema)` to create a new message.\n */\nexport const BalanceSeriesSchema: GenMessage<BalanceSeries> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 4);\n\n/**\n * GetBalanceHistoryResponse returns aligned balance chart series.\n *\n * @generated from message ledger.read.v1.GetBalanceHistoryResponse\n */\nexport type GetBalanceHistoryResponse = Message<\"ledger.read.v1.GetBalanceHistoryResponse\"> & {\n /**\n * Resolved history window.\n *\n * @generated from field: ledger.read.v1.BalanceRange range = 1;\n */\n range: BalanceRange;\n\n /**\n * Sampling interval between points, such as \"5m\" or \"1h\".\n *\n * @generated from field: string bucket = 2;\n */\n bucket: string;\n\n /**\n * First point timestamp in seconds since epoch (UTC).\n *\n * @generated from field: fixed32 start_ts_sec = 3;\n */\n startTsSec: number;\n\n /**\n * Last point timestamp in seconds since epoch (UTC).\n *\n * @generated from field: fixed32 end_ts_sec = 4;\n */\n endTsSec: number;\n\n /**\n * Number of aligned points in each returned series.\n *\n * @generated from field: uint32 points = 5;\n */\n points: number;\n\n /**\n * Balance series ordered by asset ID, then account bucket.\n *\n * @generated from field: repeated ledger.read.v1.BalanceSeries series = 6;\n */\n series: BalanceSeries[];\n};\n\n/**\n * Describes the message ledger.read.v1.GetBalanceHistoryResponse.\n * Use `create(GetBalanceHistoryResponseSchema)` to create a new message.\n */\nexport const GetBalanceHistoryResponseSchema: GenMessage<GetBalanceHistoryResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 5);\n\n/**\n * Account grouping metadata (used when group_by = ACCOUNT).\n *\n * @generated from message ledger.read.v1.AccountGrouping\n */\nexport type AccountGrouping = Message<\"ledger.read.v1.AccountGrouping\"> & {\n /**\n * account bucket code\n *\n * @generated from field: uint32 account_code = 1;\n */\n accountCode: number;\n\n /**\n * human-readable name (\"funding\", \"trading\")\n *\n * @generated from field: string name = 2;\n */\n name: string;\n};\n\n/**\n * Describes the message ledger.read.v1.AccountGrouping.\n * Use `create(AccountGroupingSchema)` to create a new message.\n */\nexport const AccountGroupingSchema: GenMessage<AccountGrouping> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 6);\n\n/**\n * Asset grouping metadata (used when group_by = ASSET).\n *\n * @generated from message ledger.read.v1.AssetGrouping\n */\nexport type AssetGrouping = Message<\"ledger.read.v1.AssetGrouping\"> & {\n /**\n * public asset id (0 for \"OTHER\" bucket)\n *\n * @generated from field: uint32 id = 1;\n */\n id: number;\n\n /**\n * asset symbol (\"BTC\", \"ETH\", \"OTHER\")\n *\n * @generated from field: string symbol = 2;\n */\n symbol: string;\n};\n\n/**\n * Describes the message ledger.read.v1.AssetGrouping.\n * Use `create(AssetGroupingSchema)` to create a new message.\n */\nexport const AssetGroupingSchema: GenMessage<AssetGrouping> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 7);\n\n/**\n * Equity history in USDT (or BTC via client-side conversion using btc_prices).\n * Values are derived from per-asset balances and market prices (close ticks).\n *\n * @generated from message ledger.read.v1.GetEquityHistorySeriesRequest\n */\nexport type GetEquityHistorySeriesRequest = Message<\"ledger.read.v1.GetEquityHistorySeriesRequest\"> & {\n /**\n * Optional sub-account to scope equity to. If omitted, equity is returned for\n * the authenticated root account derived from the JWT or API key.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n\n /**\n * History window to return. When unset/UNSPECIFIED, defaults to 1D.\n *\n * @generated from field: ledger.read.v1.BalanceRange range = 2;\n */\n range: BalanceRange;\n\n /**\n * Optional subset of account buckets.\n * When empty, server returns both funding and trading.\n * Only used when group_by = ACCOUNT.\n *\n * @generated from field: repeated ledger.v1.AccountCode account_codes = 4;\n */\n accountCodes: AccountCode[];\n\n /**\n * How to group the equity series. Defaults to ACCOUNT if unspecified.\n *\n * @generated from field: ledger.read.v1.EquityGroupBy group_by = 5;\n */\n groupBy: EquityGroupBy;\n};\n\n/**\n * Describes the message ledger.read.v1.GetEquityHistorySeriesRequest.\n * Use `create(GetEquityHistorySeriesRequestSchema)` to create a new message.\n */\nexport const GetEquityHistorySeriesRequestSchema: GenMessage<GetEquityHistorySeriesRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 8);\n\n/**\n * Columnar equity series payload (scaled integers).\n * REST renders decimal strings from these values.\n *\n * @generated from message ledger.read.v1.EquitySeries\n */\nexport type EquitySeries = Message<\"ledger.read.v1.EquitySeries\"> & {\n /**\n * Grouping identifier: either account or asset, depending on request group_by.\n *\n * @generated from oneof ledger.read.v1.EquitySeries.grouping\n */\n grouping: {\n /**\n * set when group_by = ACCOUNT\n *\n * @generated from field: ledger.read.v1.AccountGrouping account = 1;\n */\n value: AccountGrouping;\n case: \"account\";\n } | {\n /**\n * set when group_by = ASSET\n *\n * @generated from field: ledger.read.v1.AssetGrouping asset = 3;\n */\n value: AssetGrouping;\n case: \"asset\";\n } | { case: undefined; value?: undefined };\n\n /**\n * Equity in quote currency (USDT) scaled by 1e4 (4 decimals).\n * Values align 1:1 with timestamps.\n *\n * @generated from field: repeated sint64 equity_q = 2;\n */\n equityQ: bigint[];\n};\n\n/**\n * Describes the message ledger.read.v1.EquitySeries.\n * Use `create(EquitySeriesSchema)` to create a new message.\n */\nexport const EquitySeriesSchema: GenMessage<EquitySeries> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 9);\n\n/**\n * GetEquityHistorySeriesResponse returns aligned equity chart series.\n *\n * @generated from message ledger.read.v1.GetEquityHistorySeriesResponse\n */\nexport type GetEquityHistorySeriesResponse = Message<\"ledger.read.v1.GetEquityHistorySeriesResponse\"> & {\n /**\n * Resolved history window.\n *\n * @generated from field: ledger.read.v1.BalanceRange range = 1;\n */\n range: BalanceRange;\n\n /**\n * Sampling interval between points, such as \"5m\" or \"1h\".\n *\n * @generated from field: string bucket = 2;\n */\n bucket: string;\n\n /**\n * First point timestamp in seconds since epoch (UTC).\n *\n * @generated from field: fixed32 start_ts_sec = 3;\n */\n startTsSec: number;\n\n /**\n * Last point timestamp in seconds since epoch (UTC).\n *\n * @generated from field: fixed32 end_ts_sec = 4;\n */\n endTsSec: number;\n\n /**\n * Human-readable quote asset symbol (always \"USDT\").\n *\n * @generated from field: string quote_asset = 6;\n */\n quoteAsset: string;\n\n /**\n * Number of aligned points in each returned series.\n *\n * @generated from field: uint32 points = 7;\n */\n points: number;\n\n /**\n * Equity series ordered by grouping identifier ascending.\n *\n * @generated from field: repeated ledger.read.v1.EquitySeries series = 8;\n */\n series: EquitySeries[];\n\n /**\n * BTC-USDT close price at each timestamp, scaled by 1e6 (same as price_ticks).\n * Enables client-side conversion to BTC denomination without refetch.\n *\n * @generated from field: repeated int64 btc_prices_q = 10;\n */\n btcPricesQ: bigint[];\n};\n\n/**\n * Describes the message ledger.read.v1.GetEquityHistorySeriesResponse.\n * Use `create(GetEquityHistorySeriesResponseSchema)` to create a new message.\n */\nexport const GetEquityHistorySeriesResponseSchema: GenMessage<GetEquityHistorySeriesResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 10);\n\n/**\n * @generated from message ledger.read.v1.ListTransfersRequest\n */\nexport type ListTransfersRequest = Message<\"ledger.read.v1.ListTransfersRequest\"> & {\n /**\n * Optional sub-account to scope transfers to. If omitted, transfers are\n * listed for the authenticated root account derived from the JWT or API key.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n\n /**\n * Maximum number of transfer rows to return. Defaults to 100 when omitted;\n * maximum is 1000.\n *\n * @generated from field: uint32 limit = 2;\n */\n limit: number;\n\n /**\n * Sort direction. When true, rows are returned newest first; when false,\n * rows are returned oldest first.\n *\n * @generated from field: bool reversed = 3;\n */\n reversed: boolean;\n\n /**\n * Optional lower transfer timestamp bound in microseconds since epoch (UTC),\n * inclusive.\n *\n * @generated from field: uint64 ts_min_us = 4;\n */\n tsMinUs: bigint;\n\n /**\n * Optional upper transfer timestamp bound in microseconds since epoch (UTC),\n * inclusive.\n *\n * @generated from field: uint64 ts_max_us = 5;\n */\n tsMaxUs: bigint;\n\n /**\n * Optional filter by transfer reason.\n *\n * @generated from field: ledger.v1.TransferCode transfer_code = 6;\n */\n transferCode: TransferCode;\n\n /**\n * Optional filter by asset ledger.\n *\n * @generated from field: uint32 ledger = 7;\n */\n ledger: number;\n\n /**\n * Opaque keyset cursor from a previous response. The cursor is exclusive and\n * bound to the authenticated account, sub-account scope, filters, timestamp\n * bounds, and sort direction.\n *\n * @generated from field: string page_token = 9;\n */\n pageToken: string;\n};\n\n/**\n * Describes the message ledger.read.v1.ListTransfersRequest.\n * Use `create(ListTransfersRequestSchema)` to create a new message.\n */\nexport const ListTransfersRequestSchema: GenMessage<ListTransfersRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 11);\n\n/**\n * TransferSide describes one side of a ledger transfer for display.\n *\n * @generated from message ledger.read.v1.TransferSide\n */\nexport type TransferSide = Message<\"ledger.read.v1.TransferSide\"> & {\n /**\n * Display classification for this transfer side.\n *\n * @generated from field: ledger.read.v1.TransferSideKind kind = 1;\n */\n kind: TransferSideKind;\n\n /**\n * Public root account or subaccount ID when this side is safe to identify. Never\n * populated for private counterparties or non-user ledger accounts.\n *\n * @generated from field: optional fixed64 account_id = 2;\n */\n accountId?: bigint | undefined;\n\n /**\n * Address for this side when known. For EXTERNAL_ADDRESS this is an\n * external-chain wallet address from lifecycle correlation; for identifiable\n * Polyester accounts this is a Polyester smart-account address.\n * May be empty until the corresponding lifecycle details are available.\n *\n * @generated from field: string address = 3;\n */\n address: string;\n};\n\n/**\n * Describes the message ledger.read.v1.TransferSide.\n * Use `create(TransferSideSchema)` to create a new message.\n */\nexport const TransferSideSchema: GenMessage<TransferSide> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 12);\n\n/**\n * TransferRow describes one debit or credit leg of a ledger transfer.\n *\n * @generated from message ledger.read.v1.TransferRow\n */\nexport type TransferRow = Message<\"ledger.read.v1.TransferRow\"> & {\n /**\n * Public unified asset ID. Resolve its symbol through the spot configuration\n * API. U128 amounts in this row always use a fixed 18-decimal ledger scale.\n *\n * @generated from field: uint32 asset_id = 1;\n */\n assetId: number;\n\n /**\n * Transfer amount at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 amount_e18 = 2;\n */\n amountE18?: U128 | undefined;\n\n /**\n * Product reason for this transfer.\n *\n * @generated from field: ledger.v1.TransferCode transfer_code = 3;\n */\n transferCode: TransferCode;\n\n /**\n * Account bucket affected by this transfer.\n *\n * @generated from field: ledger.v1.AccountCode account_code = 4;\n */\n accountCode: AccountCode;\n\n /**\n * Transfer timestamp in microseconds since epoch (UTC).\n *\n * @generated from field: uint64 ts_us = 5;\n */\n tsUs: bigint;\n\n /**\n * Post-transfer balance at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 balance_after_e18 = 9;\n */\n balanceAfterE18?: U128 | undefined;\n\n /**\n * True when this row is the debit leg; false when it is the credit leg.\n *\n * @generated from field: bool is_debit = 10;\n */\n isDebit: boolean;\n\n /**\n * Correlation ID used to group related transfer legs. Zero when unavailable.\n *\n * @generated from field: uint64 link_id = 11;\n */\n linkId: bigint;\n\n /**\n * Public lifecycle flow ID when this transfer belongs to a chain lifecycle flow.\n *\n * @generated from field: string flow_id = 12;\n */\n flowId: string;\n\n /**\n * Debit side of the transfer. This relationship is debit-to-credit rather\n * than row-relative; use is_debit to determine whether this row is the debit leg.\n *\n * @generated from field: ledger.read.v1.TransferSide source = 13;\n */\n source?: TransferSide | undefined;\n\n /**\n * Credit side of the transfer. This relationship is debit-to-credit rather\n * than row-relative; use is_debit to determine whether this row is the credit leg.\n *\n * @generated from field: ledger.read.v1.TransferSide destination = 14;\n */\n destination?: TransferSide | undefined;\n};\n\n/**\n * Describes the message ledger.read.v1.TransferRow.\n * Use `create(TransferRowSchema)` to create a new message.\n */\nexport const TransferRowSchema: GenMessage<TransferRow> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 13);\n\n/**\n * ListTransfersResponse contains transfer rows and an optional continuation cursor.\n *\n * @generated from message ledger.read.v1.ListTransfersResponse\n */\nexport type ListTransfersResponse = Message<\"ledger.read.v1.ListTransfersResponse\"> & {\n /**\n * Transfer rows in requested order.\n *\n * @generated from field: repeated ledger.read.v1.TransferRow transfers = 1;\n */\n transfers: TransferRow[];\n\n /**\n * Opaque cursor for the next page. Empty when no more results exist.\n *\n * @generated from field: string next_page_token = 3;\n */\n nextPageToken: string;\n};\n\n/**\n * Describes the message ledger.read.v1.ListTransfersResponse.\n * Use `create(ListTransfersResponseSchema)` to create a new message.\n */\nexport const ListTransfersResponseSchema: GenMessage<ListTransfersResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 14);\n\n/**\n * @generated from message ledger.read.v1.ListHoldsRequest\n */\nexport type ListHoldsRequest = Message<\"ledger.read.v1.ListHoldsRequest\"> & {\n /**\n * Optional sub-account to scope holds to. If omitted, holds are listed for\n * the authenticated root account derived from the JWT or API key.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n\n /**\n * Maximum number of holds to return. Defaults to 100 when omitted; maximum is\n * 1000.\n *\n * @generated from field: uint32 limit = 2;\n */\n limit: number;\n\n /**\n * true=newest first; false=oldest first.\n *\n * @generated from field: bool reversed = 3;\n */\n reversed: boolean;\n\n /**\n * Opaque keyset cursor from a previous response. The cursor is exclusive and\n * bound to account, sub-account scope, and sort direction.\n *\n * @generated from field: string page_token = 4;\n */\n pageToken: string;\n};\n\n/**\n * Describes the message ledger.read.v1.ListHoldsRequest.\n * Use `create(ListHoldsRequestSchema)` to create a new message.\n */\nexport const ListHoldsRequestSchema: GenMessage<ListHoldsRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 15);\n\n/**\n * Hold row with compact integers and client-side resolution.\n *\n * @generated from message ledger.read.v1.HoldRow\n */\nexport type HoldRow = Message<\"ledger.read.v1.HoldRow\"> & {\n /**\n * pending transfer id (numeric)\n *\n * @generated from field: fixed64 hold_id = 1;\n */\n holdId: bigint;\n\n /**\n * Reserved amount at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 amount_reserved_e18 = 2;\n */\n amountReservedE18?: U128 | undefined;\n\n /**\n * Public unified asset id.\n *\n * @generated from field: uint32 asset_id = 3;\n */\n assetId: number;\n\n /**\n * Expiration time in nanoseconds since epoch (UTC).\n *\n * @generated from field: uint64 expires_at_ns = 4;\n */\n expiresAtNs: bigint;\n};\n\n/**\n * Describes the message ledger.read.v1.HoldRow.\n * Use `create(HoldRowSchema)` to create a new message.\n */\nexport const HoldRowSchema: GenMessage<HoldRow> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 16);\n\n/**\n * @generated from message ledger.read.v1.ListHoldsResponse\n */\nexport type ListHoldsResponse = Message<\"ledger.read.v1.ListHoldsResponse\"> & {\n /**\n * Hold rows in the sort direction requested by the caller.\n *\n * @generated from field: repeated ledger.read.v1.HoldRow holds = 1;\n */\n holds: HoldRow[];\n\n /**\n * Opaque cursor for the next page. Empty when no more results exist.\n *\n * @generated from field: string next_page_token = 2;\n */\n nextPageToken: string;\n};\n\n/**\n * Describes the message ledger.read.v1.ListHoldsResponse.\n * Use `create(ListHoldsResponseSchema)` to create a new message.\n */\nexport const ListHoldsResponseSchema: GenMessage<ListHoldsResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 17);\n\n/**\n * ErrorDetail is attached to ConnectRPC errors for structured error handling.\n * Clients can inspect this to get a stable machine-readable error code.\n *\n * @generated from message ledger.read.v1.ErrorDetail\n */\nexport type ErrorDetail = Message<\"ledger.read.v1.ErrorDetail\"> & {\n /**\n * Stable error code matching the REST problem+json \"code\" field.\n *\n * @generated from field: ledger.read.v1.ErrorCode code = 1;\n */\n code: ErrorCode;\n};\n\n/**\n * Describes the message ledger.read.v1.ErrorDetail.\n * Use `create(ErrorDetailSchema)` to create a new message.\n */\nexport const ErrorDetailSchema: GenMessage<ErrorDetail> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 18);\n\n/**\n * Supported history windows for balance charts.\n *\n * @generated from enum ledger.read.v1.BalanceRange\n */\nexport enum BalanceRange {\n /**\n * @generated from enum value: RANGE_UNSPECIFIED = 0;\n */\n RANGE_UNSPECIFIED = 0,\n\n /**\n * 1 day\n *\n * @generated from enum value: DAY_1 = 1;\n */\n DAY_1 = 1,\n\n /**\n * 7 days\n *\n * @generated from enum value: DAY_7 = 2;\n */\n DAY_7 = 2,\n\n /**\n * 30 days\n *\n * @generated from enum value: DAY_30 = 3;\n */\n DAY_30 = 3,\n\n /**\n * 90 days\n *\n * @generated from enum value: DAY_90 = 4;\n */\n DAY_90 = 4,\n\n /**\n * 180 days\n *\n * @generated from enum value: DAY_180 = 5;\n */\n DAY_180 = 5,\n\n /**\n * 365 days\n *\n * @generated from enum value: DAY_365 = 6;\n */\n DAY_365 = 6,\n}\n\n/**\n * Describes the enum ledger.read.v1.BalanceRange.\n */\nexport const BalanceRangeSchema: GenEnum<BalanceRange> = /*@__PURE__*/\n enumDesc(file_ledger_read_v1_ledger_read, 0);\n\n/**\n * How to group equity series data.\n *\n * @generated from enum ledger.read.v1.EquityGroupBy\n */\nexport enum EquityGroupBy {\n /**\n * defaults to ACCOUNT\n *\n * @generated from enum value: GROUP_BY_UNSPECIFIED = 0;\n */\n GROUP_BY_UNSPECIFIED = 0,\n\n /**\n * group by account bucket\n *\n * @generated from enum value: GROUP_BY_ACCOUNT = 1;\n */\n GROUP_BY_ACCOUNT = 1,\n\n /**\n * group by asset (BTC, ETH, etc.)\n *\n * @generated from enum value: GROUP_BY_ASSET = 2;\n */\n GROUP_BY_ASSET = 2,\n}\n\n/**\n * Describes the enum ledger.read.v1.EquityGroupBy.\n */\nexport const EquityGroupBySchema: GenEnum<EquityGroupBy> = /*@__PURE__*/\n enumDesc(file_ledger_read_v1_ledger_read, 1);\n\n/**\n * TransferSideKind identifies the display class for one side of a transfer.\n *\n * @generated from enum ledger.read.v1.TransferSideKind\n */\nexport enum TransferSideKind {\n /**\n * Transfer side type was not specified.\n *\n * @generated from enum value: TRANSFER_SIDE_KIND_UNSPECIFIED = 0;\n */\n TRANSFER_SIDE_KIND_UNSPECIFIED = 0,\n\n /**\n * Polyester funding account.\n *\n * @generated from enum value: FUNDING_ACCOUNT = 1;\n */\n FUNDING_ACCOUNT = 1,\n\n /**\n * Polyester trading account.\n *\n * @generated from enum value: TRADING_ACCOUNT = 2;\n */\n TRADING_ACCOUNT = 2,\n\n /**\n * External wallet or chain address. The address is lifecycle-derived and may\n * be empty until ledger-to-lifecycle correlation is projected.\n *\n * @generated from enum value: EXTERNAL_ADDRESS = 3;\n */\n EXTERNAL_ADDRESS = 3,\n\n /**\n * Private off-chain counterparty that must not be identified to the caller.\n * account_id and address are intentionally omitted.\n *\n * @generated from enum value: PRIVATE_COUNTERPARTY = 4;\n */\n PRIVATE_COUNTERPARTY = 4,\n\n /**\n * Fee ledger side, for example spot or perp trading fees.\n *\n * @generated from enum value: FEE_ACCOUNT = 5;\n */\n FEE_ACCOUNT = 5,\n\n /**\n * System, operator, clearing, or other non-user side.\n *\n * @generated from enum value: SYSTEM_ACCOUNT = 6;\n */\n SYSTEM_ACCOUNT = 6,\n}\n\n/**\n * Describes the enum ledger.read.v1.TransferSideKind.\n */\nexport const TransferSideKindSchema: GenEnum<TransferSideKind> = /*@__PURE__*/\n enumDesc(file_ledger_read_v1_ledger_read, 2);\n\n/**\n * ErrorCode enumerates stable machine-readable error codes for the Ledger Read\n * API. These mirror the REST problem+json \"code\" field for parity between REST\n * and ConnectRPC clients.\n *\n * @generated from enum ledger.read.v1.ErrorCode\n */\nexport enum ErrorCode {\n /**\n * @generated from enum value: ERROR_CODE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: ERROR_CODE_BAD_REQUEST = 1;\n */\n BAD_REQUEST = 1,\n\n /**\n * @generated from enum value: ERROR_CODE_UNAUTHENTICATED = 2;\n */\n UNAUTHENTICATED = 2,\n\n /**\n * @generated from enum value: ERROR_CODE_PERMISSION_DENIED = 3;\n */\n PERMISSION_DENIED = 3,\n\n /**\n * @generated from enum value: ERROR_CODE_NOT_FOUND = 4;\n */\n NOT_FOUND = 4,\n\n /**\n * Missing or invalid account identifier (legacy; used by older endpoints).\n *\n * @generated from enum value: ERROR_CODE_MISSING_ACCOUNT_ID = 5;\n */\n MISSING_ACCOUNT_ID = 5,\n\n /**\n * @generated from enum value: ERROR_CODE_INVALID_ACCOUNT_ID = 6;\n */\n INVALID_ACCOUNT_ID = 6,\n\n /**\n * Wallet-specific errors for balance lookups by wallet.\n *\n * @generated from enum value: ERROR_CODE_MISSING_WALLET = 7;\n */\n MISSING_WALLET = 7,\n\n /**\n * @generated from enum value: ERROR_CODE_WALLET_RESOLUTION_UNAVAILABLE = 8;\n */\n WALLET_RESOLUTION_UNAVAILABLE = 8,\n\n /**\n * @generated from enum value: ERROR_CODE_WALLET_NOT_FOUND = 9;\n */\n WALLET_NOT_FOUND = 9,\n\n /**\n * Upstream dependency error (e.g., transfers store, wallet resolver).\n *\n * @generated from enum value: ERROR_CODE_UPSTREAM_ERROR = 10;\n */\n UPSTREAM_ERROR = 10,\n}\n\n/**\n * Describes the enum ledger.read.v1.ErrorCode.\n */\nexport const ErrorCodeSchema: GenEnum<ErrorCode> = /*@__PURE__*/\n enumDesc(file_ledger_read_v1_ledger_read, 3);\n\n/**\n * LedgerReadService exposes read-only ledger endpoints (balances, history, transfers, holds).\n *\n * @generated from service ledger.read.v1.LedgerReadService\n */\nexport const LedgerReadService: GenService<{\n /**\n * Retrieve balance history buckets for an account.\n * Supports optional subaccount, range, asset, and account-code filters.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.GetBalanceHistory\n */\n getBalanceHistory: {\n methodKind: \"unary\";\n input: typeof GetBalanceHistoryRequestSchema;\n output: typeof GetBalanceHistoryResponseSchema;\n },\n /**\n * Retrieve equity history as columnar series data.\n * Supports optional subaccount, range, account-code filtering, and grouping by account or asset.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.GetEquityHistorySeries\n */\n getEquityHistorySeries: {\n methodKind: \"unary\";\n input: typeof GetEquityHistorySeriesRequestSchema;\n output: typeof GetEquityHistorySeriesResponseSchema;\n },\n /**\n * List finalized transfer history for an account.\n * Supports optional subaccount, asset, ordering, and cursor filters.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.ListTransfers\n */\n listTransfers: {\n methodKind: \"unary\";\n input: typeof ListTransfersRequestSchema;\n output: typeof ListTransfersResponseSchema;\n },\n /**\n * ListHolds returns pending holds with integer amounts (u128) and asset ids.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.ListHolds\n */\n listHolds: {\n methodKind: \"unary\";\n input: typeof ListHoldsRequestSchema;\n output: typeof ListHoldsResponseSchema;\n },\n /**\n * Retrieve the latest balances for an account.\n * Supports optional subaccount scoping and returns asset symbols with decimal amounts on REST.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.GetBalances\n */\n getBalances: {\n methodKind: \"unary\";\n input: typeof GetBalancesRequestSchema;\n output: typeof GetBalancesResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_ledger_read_v1_ledger_read, 0);\n\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ledger_read_pb.js","names":[],"sources":["../../../../../src/gen/ledger/read/v1/ledger_read_pb.ts"],"sourcesContent":["// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file ledger/read/v1/ledger_read.proto (package ledger.read.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { AccountCode, TransferCode } from \"../../v1/catalog_pb.js\";\nimport { file_ledger_v1_catalog } from \"../../v1/catalog_pb.js\";\nimport type { U128 } from \"../../../polyester/type/v1/u128_pb.js\";\nimport { file_polyester_type_v1_u128 } from \"../../../polyester/type/v1/u128_pb.js\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file ledger/read/v1/ledger_read.proto.\n */\nexport const file_ledger_read_v1_ledger_read: GenFile = /*@__PURE__*/\n fileDesc(\"CiBsZWRnZXIvcmVhZC92MS9sZWRnZXJfcmVhZC5wcm90bxIObGVkZ2VyLnJlYWQudjEiQgoSR2V0QmFsYW5jZXNSZXF1ZXN0EhoKDXN1YmFjY291bnRfaWQYASABKAZIAIgBAUIQCg5fc3ViYWNjb3VudF9pZCL/AQoMQXNzZXRCYWxhbmNlEhAKCGFzc2V0X2lkGAEgASgNEigKB3RyYWRpbmcYAiABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EigKB2Z1bmRpbmcYAyABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EikKCHJlc2VydmVkGAQgASgLMhcucG9seWVzdGVyLnR5cGUudjEuVTEyOBIqCglhdmFpbGFibGUYBSABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EhgKEHRyYWRpbmdfcmV2aXNpb24YBiABKAQSGAoQZnVuZGluZ19yZXZpc2lvbhgHIAEoBCJFChNHZXRCYWxhbmNlc1Jlc3BvbnNlEi4KCGJhbGFuY2VzGAEgAygLMhwubGVkZ2VyLnJlYWQudjEuQXNzZXRCYWxhbmNlIrYBChhHZXRCYWxhbmNlSGlzdG9yeVJlcXVlc3QSGgoNc3ViYWNjb3VudF9pZBgBIAEoBkgAiAEBEi0KBXJhbmdlGAIgASgOMhwubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVJhbmdlQgASDgoGbGVkZ2VyGAMgASgNEi0KDWFjY291bnRfY29kZXMYBCADKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGVCEAoOX3N1YmFjY291bnRfaWQiYgoNQmFsYW5jZVNlcmllcxIQCghhc3NldF9pZBgBIAEoDRIsCgxhY2NvdW50X2NvZGUYAiABKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGUSEQoJYmFsYW5jZV9xGAMgAygEIsEBChlHZXRCYWxhbmNlSGlzdG9yeVJlc3BvbnNlEisKBXJhbmdlGAEgASgOMhwubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVJhbmdlEg4KBmJ1Y2tldBgCIAEoCRIUCgxzdGFydF90c19zZWMYAyABKAcSEgoKZW5kX3RzX3NlYxgEIAEoBxIOCgZwb2ludHMYBSABKA0SLQoGc2VyaWVzGAYgAygLMh0ubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVNlcmllcyI1Cg9BY2NvdW50R3JvdXBpbmcSFAoMYWNjb3VudF9jb2RlGAEgASgNEgwKBG5hbWUYAiABKAkiKwoNQXNzZXRHcm91cGluZxIKCgJpZBgBIAEoDRIOCgZzeW1ib2wYAiABKAki3AEKHUdldEVxdWl0eUhpc3RvcnlTZXJpZXNSZXF1ZXN0EhoKDXN1YmFjY291bnRfaWQYASABKAZIAIgBARItCgVyYW5nZRgCIAEoDjIcLmxlZGdlci5yZWFkLnYxLkJhbGFuY2VSYW5nZUIAEi0KDWFjY291bnRfY29kZXMYBCADKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGUSLwoIZ3JvdXBfYnkYBSABKA4yHS5sZWRnZXIucmVhZC52MS5FcXVpdHlHcm91cEJ5QhAKDl9zdWJhY2NvdW50X2lkIpABCgxFcXVpdHlTZXJpZXMSMgoHYWNjb3VudBgBIAEoCzIfLmxlZGdlci5yZWFkLnYxLkFjY291bnRHcm91cGluZ0gAEi4KBWFzc2V0GAMgASgLMh0ubGVkZ2VyLnJlYWQudjEuQXNzZXRHcm91cGluZ0gAEhAKCGVxdWl0eV9xGAIgAygSQgoKCGdyb3VwaW5nIvABCh5HZXRFcXVpdHlIaXN0b3J5U2VyaWVzUmVzcG9uc2USKwoFcmFuZ2UYASABKA4yHC5sZWRnZXIucmVhZC52MS5CYWxhbmNlUmFuZ2USDgoGYnVja2V0GAIgASgJEhQKDHN0YXJ0X3RzX3NlYxgDIAEoBxISCgplbmRfdHNfc2VjGAQgASgHEhMKC3F1b3RlX2Fzc2V0GAYgASgJEg4KBnBvaW50cxgHIAEoDRIsCgZzZXJpZXMYCCADKAsyHC5sZWRnZXIucmVhZC52MS5FcXVpdHlTZXJpZXMSFAoMYnRjX3ByaWNlc19xGAogAygDIucBChRMaXN0VHJhbnNmZXJzUmVxdWVzdBIaCg1zdWJhY2NvdW50X2lkGAEgASgGSACIAQESDwoFbGltaXQYAiABKA1CABIQCghyZXZlcnNlZBgDIAEoCBIRCgl0c19taW5fdXMYBCABKAQSEQoJdHNfbWF4X3VzGAUgASgEEjAKDXRyYW5zZmVyX2NvZGUYBiABKA4yFy5sZWRnZXIudjEuVHJhbnNmZXJDb2RlQgASDgoGbGVkZ2VyGAcgASgNEhQKCnBhZ2VfdG9rZW4YCSABKAlCADoAQhAKDl9zdWJhY2NvdW50X2lkIpsBCgxUcmFuc2ZlclNpZGUSLgoEa2luZBgBIAEoDjIgLmxlZGdlci5yZWFkLnYxLlRyYW5zZmVyU2lkZUtpbmQSFwoKYWNjb3VudF9pZBgCIAEoBkgAiAEBEg8KB2FkZHJlc3MYAyABKAkSFQoIY2hhaW5faWQYBCABKA1IAYgBAUINCgtfYWNjb3VudF9pZEILCglfY2hhaW5faWQiggMKC1RyYW5zZmVyUm93EhAKCGFzc2V0X2lkGAEgASgNEisKCmFtb3VudF9lMTgYAiABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4Ei4KDXRyYW5zZmVyX2NvZGUYAyABKA4yFy5sZWRnZXIudjEuVHJhbnNmZXJDb2RlEiwKDGFjY291bnRfY29kZRgEIAEoDjIWLmxlZGdlci52MS5BY2NvdW50Q29kZRINCgV0c191cxgFIAEoBBIyChFiYWxhbmNlX2FmdGVyX2UxOBgJIAEoCzIXLnBvbHllc3Rlci50eXBlLnYxLlUxMjgSEAoIaXNfZGViaXQYCiABKAgSDwoHbGlua19pZBgLIAEoBBIPCgdmbG93X2lkGAwgASgJEiwKBnNvdXJjZRgNIAEoCzIcLmxlZGdlci5yZWFkLnYxLlRyYW5zZmVyU2lkZRIxCgtkZXN0aW5hdGlvbhgOIAEoCzIcLmxlZGdlci5yZWFkLnYxLlRyYW5zZmVyU2lkZSJiChVMaXN0VHJhbnNmZXJzUmVzcG9uc2USLgoJdHJhbnNmZXJzGAEgAygLMhsubGVkZ2VyLnJlYWQudjEuVHJhbnNmZXJSb3cSGQoPbmV4dF9wYWdlX3Rva2VuGAMgASgJQgAieQoQTGlzdEhvbGRzUmVxdWVzdBIaCg1zdWJhY2NvdW50X2lkGAEgASgGSACIAQESDwoFbGltaXQYAiABKA1CABIQCghyZXZlcnNlZBgDIAEoCBIUCgpwYWdlX3Rva2VuGAQgASgJQgBCEAoOX3N1YmFjY291bnRfaWQieQoHSG9sZFJvdxIPCgdob2xkX2lkGAEgASgGEjQKE2Ftb3VudF9yZXNlcnZlZF9lMTgYAiABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EhAKCGFzc2V0X2lkGAMgASgNEhUKDWV4cGlyZXNfYXRfbnMYBCABKAQiVgoRTGlzdEhvbGRzUmVzcG9uc2USJgoFaG9sZHMYASADKAsyFy5sZWRnZXIucmVhZC52MS5Ib2xkUm93EhkKD25leHRfcGFnZV90b2tlbhgCIAEoCUIAIjYKC0Vycm9yRGV0YWlsEicKBGNvZGUYASABKA4yGS5sZWRnZXIucmVhZC52MS5FcnJvckNvZGUqbQoMQmFsYW5jZVJhbmdlEhUKEVJBTkdFX1VOU1BFQ0lGSUVEEAASCQoFREFZXzEQARIJCgVEQVlfNxACEgoKBkRBWV8zMBADEgoKBkRBWV85MBAEEgsKB0RBWV8xODAQBRILCgdEQVlfMzY1EAYqUwoNRXF1aXR5R3JvdXBCeRIYChRHUk9VUF9CWV9VTlNQRUNJRklFRBAAEhQKEEdST1VQX0JZX0FDQ09VTlQQARISCg5HUk9VUF9CWV9BU1NFVBACKrUBChBUcmFuc2ZlclNpZGVLaW5kEiIKHlRSQU5TRkVSX1NJREVfS0lORF9VTlNQRUNJRklFRBAAEhMKD0ZVTkRJTkdfQUNDT1VOVBABEhMKD1RSQURJTkdfQUNDT1VOVBACEhQKEEVYVEVSTkFMX0FERFJFU1MQAxIYChRQUklWQVRFX0NPVU5URVJQQVJUWRAEEg8KC0ZFRV9BQ0NPVU5UEAUSEgoOU1lTVEVNX0FDQ09VTlQQBiryAgoJRXJyb3JDb2RlEhoKFkVSUk9SX0NPREVfVU5TUEVDSUZJRUQQABIaChZFUlJPUl9DT0RFX0JBRF9SRVFVRVNUEAESHgoaRVJST1JfQ09ERV9VTkFVVEhFTlRJQ0FURUQQAhIgChxFUlJPUl9DT0RFX1BFUk1JU1NJT05fREVOSUVEEAMSGAoURVJST1JfQ09ERV9OT1RfRk9VTkQQBBIhCh1FUlJPUl9DT0RFX01JU1NJTkdfQUNDT1VOVF9JRBAFEiEKHUVSUk9SX0NPREVfSU5WQUxJRF9BQ0NPVU5UX0lEEAYSHQoZRVJST1JfQ09ERV9NSVNTSU5HX1dBTExFVBAHEiwKKEVSUk9SX0NPREVfV0FMTEVUX1JFU09MVVRJT05fVU5BVkFJTEFCTEUQCBIfChtFUlJPUl9DT0RFX1dBTExFVF9OT1RfRk9VTkQQCRIdChlFUlJPUl9DT0RFX1VQU1RSRUFNX0VSUk9SEAoyiAQKEUxlZGdlclJlYWRTZXJ2aWNlEmoKEUdldEJhbGFuY2VIaXN0b3J5EigubGVkZ2VyLnJlYWQudjEuR2V0QmFsYW5jZUhpc3RvcnlSZXF1ZXN0GikubGVkZ2VyLnJlYWQudjEuR2V0QmFsYW5jZUhpc3RvcnlSZXNwb25zZSIAEnkKFkdldEVxdWl0eUhpc3RvcnlTZXJpZXMSLS5sZWRnZXIucmVhZC52MS5HZXRFcXVpdHlIaXN0b3J5U2VyaWVzUmVxdWVzdBouLmxlZGdlci5yZWFkLnYxLkdldEVxdWl0eUhpc3RvcnlTZXJpZXNSZXNwb25zZSIAEl4KDUxpc3RUcmFuc2ZlcnMSJC5sZWRnZXIucmVhZC52MS5MaXN0VHJhbnNmZXJzUmVxdWVzdBolLmxlZGdlci5yZWFkLnYxLkxpc3RUcmFuc2ZlcnNSZXNwb25zZSIAElIKCUxpc3RIb2xkcxIgLmxlZGdlci5yZWFkLnYxLkxpc3RIb2xkc1JlcXVlc3QaIS5sZWRnZXIucmVhZC52MS5MaXN0SG9sZHNSZXNwb25zZSIAElgKC0dldEJhbGFuY2VzEiIubGVkZ2VyLnJlYWQudjEuR2V0QmFsYW5jZXNSZXF1ZXN0GiMubGVkZ2VyLnJlYWQudjEuR2V0QmFsYW5jZXNSZXNwb25zZSIAQkdaRWdpdGh1Yi5jb20vRmFicmljLUxhYnMvcG9seWVzdGVyLXNkay1nby9nZW4vbGVkZ2VyL3JlYWQvdjE7bGVkZ2VycmR2MWIGcHJvdG8z\", [file_ledger_v1_catalog, file_polyester_type_v1_u128]);\n\n/**\n * @generated from message ledger.read.v1.GetBalancesRequest\n */\nexport type GetBalancesRequest = Message<\"ledger.read.v1.GetBalancesRequest\"> & {\n /**\n * Optional sub-account to scope balances to. If omitted, balances are\n * returned for the authenticated root account derived from the JWT or API\n * key. The logical account id itself is always derived from the caller's JWT\n * or API key, not from this payload.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n};\n\n/**\n * Describes the message ledger.read.v1.GetBalancesRequest.\n * Use `create(GetBalancesRequestSchema)` to create a new message.\n */\nexport const GetBalancesRequestSchema: GenMessage<GetBalancesRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 0);\n\n/**\n * Fixed-size representation for balances (for Protobuf/WS clients).\n * Uses common U128 messages for amounts to keep schema tidy and consistent.\n *\n * @generated from message ledger.read.v1.AssetBalance\n */\nexport type AssetBalance = Message<\"ledger.read.v1.AssetBalance\"> & {\n /**\n * Public unified asset id. Resolve symbol from SpotConfig; U128 amounts in\n * this message always use fixed 18-decimal ledger scale.\n *\n * @generated from field: uint32 asset_id = 1;\n */\n assetId: number;\n\n /**\n * Trading balance at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 trading = 2;\n */\n trading?: U128 | undefined;\n\n /**\n * Funding balance at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 funding = 3;\n */\n funding?: U128 | undefined;\n\n /**\n * Reserved amount in the trading bucket at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 reserved = 4;\n */\n reserved?: U128 | undefined;\n\n /**\n * Amount currently available for new trading activity at fixed 18-decimal\n * ledger scale. This value already accounts for active reservations.\n *\n * @generated from field: polyester.type.v1.U128 available = 5;\n */\n available?: U128 | undefined;\n\n /**\n * Opaque monotonic revision for the atomic trading, reserved, and available\n * values. Higher means newer; zero means no trading state has been observed.\n *\n * @generated from field: uint64 trading_revision = 6;\n */\n tradingRevision: bigint;\n\n /**\n * Opaque monotonic revision for the funding value. Higher means newer; zero\n * means no funding state has been observed.\n *\n * @generated from field: uint64 funding_revision = 7;\n */\n fundingRevision: bigint;\n};\n\n/**\n * Describes the message ledger.read.v1.AssetBalance.\n * Use `create(AssetBalanceSchema)` to create a new message.\n */\nexport const AssetBalanceSchema: GenMessage<AssetBalance> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 1);\n\n/**\n * @generated from message ledger.read.v1.GetBalancesResponse\n */\nexport type GetBalancesResponse = Message<\"ledger.read.v1.GetBalancesResponse\"> & {\n /**\n * One entry for every supported unified asset, including assets with zero\n * balances. Sorted by available trading amount (highest first), then by\n * asset symbol alphabetically.\n *\n * @generated from field: repeated ledger.read.v1.AssetBalance balances = 1;\n */\n balances: AssetBalance[];\n};\n\n/**\n * Describes the message ledger.read.v1.GetBalancesResponse.\n * Use `create(GetBalancesResponseSchema)` to create a new message.\n */\nexport const GetBalancesResponseSchema: GenMessage<GetBalancesResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 2);\n\n/**\n * @generated from message ledger.read.v1.GetBalanceHistoryRequest\n */\nexport type GetBalanceHistoryRequest = Message<\"ledger.read.v1.GetBalanceHistoryRequest\"> & {\n /**\n * Optional sub-account to scope balances to. If omitted, balances are\n * returned for the authenticated root account derived from the JWT or API\n * key. The logical account id itself is always derived from the caller's JWT\n * or API key, not from this payload.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n\n /**\n * History window to return. When unset/UNSPECIFIED, defaults to 1D.\n *\n * @generated from field: ledger.read.v1.BalanceRange range = 2;\n */\n range: BalanceRange;\n\n /**\n * Optional public asset filter. When unset/0, returns all assets.\n *\n * @generated from field: uint32 ledger = 3;\n */\n ledger: number;\n\n /**\n * Optional subset of account buckets to return. When empty, returns all\n * account buckets.\n *\n * @generated from field: repeated ledger.v1.AccountCode account_codes = 4;\n */\n accountCodes: AccountCode[];\n};\n\n/**\n * Describes the message ledger.read.v1.GetBalanceHistoryRequest.\n * Use `create(GetBalanceHistoryRequestSchema)` to create a new message.\n */\nexport const GetBalanceHistoryRequestSchema: GenMessage<GetBalanceHistoryRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 3);\n\n/**\n * Columnar balance series payload (scaled integers).\n * REST renders decimal strings from these values.\n *\n * @generated from message ledger.read.v1.BalanceSeries\n */\nexport type BalanceSeries = Message<\"ledger.read.v1.BalanceSeries\"> & {\n /**\n * public unified asset id\n *\n * @generated from field: uint32 asset_id = 1;\n */\n assetId: number;\n\n /**\n * account bucket\n *\n * @generated from field: ledger.v1.AccountCode account_code = 2;\n */\n accountCode: AccountCode;\n\n /**\n * Chart balance in asset units scaled by 1e7 (7 decimals).\n * Values are downscaled from 18-decimal ledger balances for compact charting\n * and align 1:1 with implicit timestamps.\n *\n * @generated from field: repeated uint64 balance_q = 3;\n */\n balanceQ: bigint[];\n};\n\n/**\n * Describes the message ledger.read.v1.BalanceSeries.\n * Use `create(BalanceSeriesSchema)` to create a new message.\n */\nexport const BalanceSeriesSchema: GenMessage<BalanceSeries> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 4);\n\n/**\n * GetBalanceHistoryResponse returns aligned balance chart series.\n *\n * @generated from message ledger.read.v1.GetBalanceHistoryResponse\n */\nexport type GetBalanceHistoryResponse = Message<\"ledger.read.v1.GetBalanceHistoryResponse\"> & {\n /**\n * Resolved history window.\n *\n * @generated from field: ledger.read.v1.BalanceRange range = 1;\n */\n range: BalanceRange;\n\n /**\n * Sampling interval between points, such as \"5m\" or \"1h\".\n *\n * @generated from field: string bucket = 2;\n */\n bucket: string;\n\n /**\n * First point timestamp in seconds since epoch (UTC).\n *\n * @generated from field: fixed32 start_ts_sec = 3;\n */\n startTsSec: number;\n\n /**\n * Last point timestamp in seconds since epoch (UTC).\n *\n * @generated from field: fixed32 end_ts_sec = 4;\n */\n endTsSec: number;\n\n /**\n * Number of aligned points in each returned series.\n *\n * @generated from field: uint32 points = 5;\n */\n points: number;\n\n /**\n * Balance series ordered by asset ID, then account bucket.\n *\n * @generated from field: repeated ledger.read.v1.BalanceSeries series = 6;\n */\n series: BalanceSeries[];\n};\n\n/**\n * Describes the message ledger.read.v1.GetBalanceHistoryResponse.\n * Use `create(GetBalanceHistoryResponseSchema)` to create a new message.\n */\nexport const GetBalanceHistoryResponseSchema: GenMessage<GetBalanceHistoryResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 5);\n\n/**\n * Account grouping metadata (used when group_by = ACCOUNT).\n *\n * @generated from message ledger.read.v1.AccountGrouping\n */\nexport type AccountGrouping = Message<\"ledger.read.v1.AccountGrouping\"> & {\n /**\n * account bucket code\n *\n * @generated from field: uint32 account_code = 1;\n */\n accountCode: number;\n\n /**\n * human-readable name (\"funding\", \"trading\")\n *\n * @generated from field: string name = 2;\n */\n name: string;\n};\n\n/**\n * Describes the message ledger.read.v1.AccountGrouping.\n * Use `create(AccountGroupingSchema)` to create a new message.\n */\nexport const AccountGroupingSchema: GenMessage<AccountGrouping> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 6);\n\n/**\n * Asset grouping metadata (used when group_by = ASSET).\n *\n * @generated from message ledger.read.v1.AssetGrouping\n */\nexport type AssetGrouping = Message<\"ledger.read.v1.AssetGrouping\"> & {\n /**\n * public asset id (0 for \"OTHER\" bucket)\n *\n * @generated from field: uint32 id = 1;\n */\n id: number;\n\n /**\n * asset symbol (\"BTC\", \"ETH\", \"OTHER\")\n *\n * @generated from field: string symbol = 2;\n */\n symbol: string;\n};\n\n/**\n * Describes the message ledger.read.v1.AssetGrouping.\n * Use `create(AssetGroupingSchema)` to create a new message.\n */\nexport const AssetGroupingSchema: GenMessage<AssetGrouping> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 7);\n\n/**\n * Equity history in USDT (or BTC via client-side conversion using btc_prices).\n * Values are derived from per-asset balances and market prices (close ticks).\n *\n * @generated from message ledger.read.v1.GetEquityHistorySeriesRequest\n */\nexport type GetEquityHistorySeriesRequest = Message<\"ledger.read.v1.GetEquityHistorySeriesRequest\"> & {\n /**\n * Optional sub-account to scope equity to. If omitted, equity is returned for\n * the authenticated root account derived from the JWT or API key.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n\n /**\n * History window to return. When unset/UNSPECIFIED, defaults to 1D.\n *\n * @generated from field: ledger.read.v1.BalanceRange range = 2;\n */\n range: BalanceRange;\n\n /**\n * Optional subset of account buckets.\n * When empty, server returns both funding and trading.\n * Only used when group_by = ACCOUNT.\n *\n * @generated from field: repeated ledger.v1.AccountCode account_codes = 4;\n */\n accountCodes: AccountCode[];\n\n /**\n * How to group the equity series. Defaults to ACCOUNT if unspecified.\n *\n * @generated from field: ledger.read.v1.EquityGroupBy group_by = 5;\n */\n groupBy: EquityGroupBy;\n};\n\n/**\n * Describes the message ledger.read.v1.GetEquityHistorySeriesRequest.\n * Use `create(GetEquityHistorySeriesRequestSchema)` to create a new message.\n */\nexport const GetEquityHistorySeriesRequestSchema: GenMessage<GetEquityHistorySeriesRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 8);\n\n/**\n * Columnar equity series payload (scaled integers).\n * REST renders decimal strings from these values.\n *\n * @generated from message ledger.read.v1.EquitySeries\n */\nexport type EquitySeries = Message<\"ledger.read.v1.EquitySeries\"> & {\n /**\n * Grouping identifier: either account or asset, depending on request group_by.\n *\n * @generated from oneof ledger.read.v1.EquitySeries.grouping\n */\n grouping: {\n /**\n * set when group_by = ACCOUNT\n *\n * @generated from field: ledger.read.v1.AccountGrouping account = 1;\n */\n value: AccountGrouping;\n case: \"account\";\n } | {\n /**\n * set when group_by = ASSET\n *\n * @generated from field: ledger.read.v1.AssetGrouping asset = 3;\n */\n value: AssetGrouping;\n case: \"asset\";\n } | { case: undefined; value?: undefined };\n\n /**\n * Equity in quote currency (USDT) scaled by 1e4 (4 decimals).\n * Values align 1:1 with timestamps.\n *\n * @generated from field: repeated sint64 equity_q = 2;\n */\n equityQ: bigint[];\n};\n\n/**\n * Describes the message ledger.read.v1.EquitySeries.\n * Use `create(EquitySeriesSchema)` to create a new message.\n */\nexport const EquitySeriesSchema: GenMessage<EquitySeries> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 9);\n\n/**\n * GetEquityHistorySeriesResponse returns aligned equity chart series.\n *\n * @generated from message ledger.read.v1.GetEquityHistorySeriesResponse\n */\nexport type GetEquityHistorySeriesResponse = Message<\"ledger.read.v1.GetEquityHistorySeriesResponse\"> & {\n /**\n * Resolved history window.\n *\n * @generated from field: ledger.read.v1.BalanceRange range = 1;\n */\n range: BalanceRange;\n\n /**\n * Sampling interval between points, such as \"5m\" or \"1h\".\n *\n * @generated from field: string bucket = 2;\n */\n bucket: string;\n\n /**\n * First point timestamp in seconds since epoch (UTC).\n *\n * @generated from field: fixed32 start_ts_sec = 3;\n */\n startTsSec: number;\n\n /**\n * Last point timestamp in seconds since epoch (UTC).\n *\n * @generated from field: fixed32 end_ts_sec = 4;\n */\n endTsSec: number;\n\n /**\n * Human-readable quote asset symbol (always \"USDT\").\n *\n * @generated from field: string quote_asset = 6;\n */\n quoteAsset: string;\n\n /**\n * Number of aligned points in each returned series.\n *\n * @generated from field: uint32 points = 7;\n */\n points: number;\n\n /**\n * Equity series ordered by grouping identifier ascending.\n *\n * @generated from field: repeated ledger.read.v1.EquitySeries series = 8;\n */\n series: EquitySeries[];\n\n /**\n * BTC-USDT close price at each timestamp, scaled by 1e6 (same as price_ticks).\n * Enables client-side conversion to BTC denomination without refetch.\n *\n * @generated from field: repeated int64 btc_prices_q = 10;\n */\n btcPricesQ: bigint[];\n};\n\n/**\n * Describes the message ledger.read.v1.GetEquityHistorySeriesResponse.\n * Use `create(GetEquityHistorySeriesResponseSchema)` to create a new message.\n */\nexport const GetEquityHistorySeriesResponseSchema: GenMessage<GetEquityHistorySeriesResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 10);\n\n/**\n * @generated from message ledger.read.v1.ListTransfersRequest\n */\nexport type ListTransfersRequest = Message<\"ledger.read.v1.ListTransfersRequest\"> & {\n /**\n * Optional sub-account to scope transfers to. If omitted, transfers are\n * listed for the authenticated root account derived from the JWT or API key.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n\n /**\n * Maximum number of transfer rows to return. Defaults to 100 when omitted;\n * maximum is 1000.\n *\n * @generated from field: uint32 limit = 2;\n */\n limit: number;\n\n /**\n * Sort direction. When true, rows are returned newest first; when false,\n * rows are returned oldest first.\n *\n * @generated from field: bool reversed = 3;\n */\n reversed: boolean;\n\n /**\n * Optional lower transfer timestamp bound in microseconds since epoch (UTC),\n * inclusive.\n *\n * @generated from field: uint64 ts_min_us = 4;\n */\n tsMinUs: bigint;\n\n /**\n * Optional upper transfer timestamp bound in microseconds since epoch (UTC),\n * inclusive.\n *\n * @generated from field: uint64 ts_max_us = 5;\n */\n tsMaxUs: bigint;\n\n /**\n * Optional filter by transfer reason.\n *\n * @generated from field: ledger.v1.TransferCode transfer_code = 6;\n */\n transferCode: TransferCode;\n\n /**\n * Optional filter by asset ledger.\n *\n * @generated from field: uint32 ledger = 7;\n */\n ledger: number;\n\n /**\n * Opaque keyset cursor from a previous response. The cursor is exclusive and\n * bound to the authenticated account, sub-account scope, filters, timestamp\n * bounds, and sort direction.\n *\n * @generated from field: string page_token = 9;\n */\n pageToken: string;\n};\n\n/**\n * Describes the message ledger.read.v1.ListTransfersRequest.\n * Use `create(ListTransfersRequestSchema)` to create a new message.\n */\nexport const ListTransfersRequestSchema: GenMessage<ListTransfersRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 11);\n\n/**\n * TransferSide describes one side of a ledger transfer for display.\n *\n * @generated from message ledger.read.v1.TransferSide\n */\nexport type TransferSide = Message<\"ledger.read.v1.TransferSide\"> & {\n /**\n * Display classification for this transfer side.\n *\n * @generated from field: ledger.read.v1.TransferSideKind kind = 1;\n */\n kind: TransferSideKind;\n\n /**\n * Public root account or subaccount ID when this side is safe to identify. Never\n * populated for private counterparties or non-user ledger accounts.\n *\n * @generated from field: optional fixed64 account_id = 2;\n */\n accountId?: bigint | undefined;\n\n /**\n * Address for this side when known. For EXTERNAL_ADDRESS this is an\n * external-chain wallet address from lifecycle correlation; for identifiable\n * Polyester accounts this is a Polyester smart-account address.\n * May be empty until the corresponding lifecycle details are available.\n *\n * @generated from field: string address = 3;\n */\n address: string;\n\n /**\n * PolyChain-registered external network identifier for EXTERNAL_ADDRESS.\n * This matches chain.zipper.v1.ChainConfig.chain_id and is not the chain's\n * native identifier (for example, an EIP-155 id) or the Polyester chain id.\n *\n * @generated from field: optional uint32 chain_id = 4;\n */\n chainId?: number | undefined;\n};\n\n/**\n * Describes the message ledger.read.v1.TransferSide.\n * Use `create(TransferSideSchema)` to create a new message.\n */\nexport const TransferSideSchema: GenMessage<TransferSide> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 12);\n\n/**\n * TransferRow describes one debit or credit leg of a ledger transfer.\n *\n * @generated from message ledger.read.v1.TransferRow\n */\nexport type TransferRow = Message<\"ledger.read.v1.TransferRow\"> & {\n /**\n * Public unified asset ID. Resolve its symbol through the spot configuration\n * API. U128 amounts in this row always use a fixed 18-decimal ledger scale.\n *\n * @generated from field: uint32 asset_id = 1;\n */\n assetId: number;\n\n /**\n * Transfer amount at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 amount_e18 = 2;\n */\n amountE18?: U128 | undefined;\n\n /**\n * Product reason for this transfer.\n *\n * @generated from field: ledger.v1.TransferCode transfer_code = 3;\n */\n transferCode: TransferCode;\n\n /**\n * Account bucket affected by this transfer.\n *\n * @generated from field: ledger.v1.AccountCode account_code = 4;\n */\n accountCode: AccountCode;\n\n /**\n * Transfer timestamp in microseconds since epoch (UTC).\n *\n * @generated from field: uint64 ts_us = 5;\n */\n tsUs: bigint;\n\n /**\n * Post-transfer balance at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 balance_after_e18 = 9;\n */\n balanceAfterE18?: U128 | undefined;\n\n /**\n * True when this row is the debit leg; false when it is the credit leg.\n *\n * @generated from field: bool is_debit = 10;\n */\n isDebit: boolean;\n\n /**\n * Correlation ID used to group related transfer legs. Zero when unavailable.\n *\n * @generated from field: uint64 link_id = 11;\n */\n linkId: bigint;\n\n /**\n * Public lifecycle flow ID when this transfer belongs to a chain lifecycle flow.\n *\n * @generated from field: string flow_id = 12;\n */\n flowId: string;\n\n /**\n * Debit side of the transfer. This relationship is debit-to-credit rather\n * than row-relative; use is_debit to determine whether this row is the debit leg.\n *\n * @generated from field: ledger.read.v1.TransferSide source = 13;\n */\n source?: TransferSide | undefined;\n\n /**\n * Credit side of the transfer. This relationship is debit-to-credit rather\n * than row-relative; use is_debit to determine whether this row is the credit leg.\n *\n * @generated from field: ledger.read.v1.TransferSide destination = 14;\n */\n destination?: TransferSide | undefined;\n};\n\n/**\n * Describes the message ledger.read.v1.TransferRow.\n * Use `create(TransferRowSchema)` to create a new message.\n */\nexport const TransferRowSchema: GenMessage<TransferRow> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 13);\n\n/**\n * ListTransfersResponse contains transfer rows and an optional continuation cursor.\n *\n * @generated from message ledger.read.v1.ListTransfersResponse\n */\nexport type ListTransfersResponse = Message<\"ledger.read.v1.ListTransfersResponse\"> & {\n /**\n * Transfer rows in requested order.\n *\n * @generated from field: repeated ledger.read.v1.TransferRow transfers = 1;\n */\n transfers: TransferRow[];\n\n /**\n * Opaque cursor for the next page. Empty when no more results exist.\n *\n * @generated from field: string next_page_token = 3;\n */\n nextPageToken: string;\n};\n\n/**\n * Describes the message ledger.read.v1.ListTransfersResponse.\n * Use `create(ListTransfersResponseSchema)` to create a new message.\n */\nexport const ListTransfersResponseSchema: GenMessage<ListTransfersResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 14);\n\n/**\n * @generated from message ledger.read.v1.ListHoldsRequest\n */\nexport type ListHoldsRequest = Message<\"ledger.read.v1.ListHoldsRequest\"> & {\n /**\n * Optional sub-account to scope holds to. If omitted, holds are listed for\n * the authenticated root account derived from the JWT or API key.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n\n /**\n * Maximum number of holds to return. Defaults to 100 when omitted; maximum is\n * 1000.\n *\n * @generated from field: uint32 limit = 2;\n */\n limit: number;\n\n /**\n * true=newest first; false=oldest first.\n *\n * @generated from field: bool reversed = 3;\n */\n reversed: boolean;\n\n /**\n * Opaque keyset cursor from a previous response. The cursor is exclusive and\n * bound to account, sub-account scope, and sort direction.\n *\n * @generated from field: string page_token = 4;\n */\n pageToken: string;\n};\n\n/**\n * Describes the message ledger.read.v1.ListHoldsRequest.\n * Use `create(ListHoldsRequestSchema)` to create a new message.\n */\nexport const ListHoldsRequestSchema: GenMessage<ListHoldsRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 15);\n\n/**\n * Hold row with compact integers and client-side resolution.\n *\n * @generated from message ledger.read.v1.HoldRow\n */\nexport type HoldRow = Message<\"ledger.read.v1.HoldRow\"> & {\n /**\n * pending transfer id (numeric)\n *\n * @generated from field: fixed64 hold_id = 1;\n */\n holdId: bigint;\n\n /**\n * Reserved amount at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 amount_reserved_e18 = 2;\n */\n amountReservedE18?: U128 | undefined;\n\n /**\n * Public unified asset id.\n *\n * @generated from field: uint32 asset_id = 3;\n */\n assetId: number;\n\n /**\n * Expiration time in nanoseconds since epoch (UTC).\n *\n * @generated from field: uint64 expires_at_ns = 4;\n */\n expiresAtNs: bigint;\n};\n\n/**\n * Describes the message ledger.read.v1.HoldRow.\n * Use `create(HoldRowSchema)` to create a new message.\n */\nexport const HoldRowSchema: GenMessage<HoldRow> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 16);\n\n/**\n * @generated from message ledger.read.v1.ListHoldsResponse\n */\nexport type ListHoldsResponse = Message<\"ledger.read.v1.ListHoldsResponse\"> & {\n /**\n * Hold rows in the sort direction requested by the caller.\n *\n * @generated from field: repeated ledger.read.v1.HoldRow holds = 1;\n */\n holds: HoldRow[];\n\n /**\n * Opaque cursor for the next page. Empty when no more results exist.\n *\n * @generated from field: string next_page_token = 2;\n */\n nextPageToken: string;\n};\n\n/**\n * Describes the message ledger.read.v1.ListHoldsResponse.\n * Use `create(ListHoldsResponseSchema)` to create a new message.\n */\nexport const ListHoldsResponseSchema: GenMessage<ListHoldsResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 17);\n\n/**\n * ErrorDetail is attached to ConnectRPC errors for structured error handling.\n * Clients can inspect this to get a stable machine-readable error code.\n *\n * @generated from message ledger.read.v1.ErrorDetail\n */\nexport type ErrorDetail = Message<\"ledger.read.v1.ErrorDetail\"> & {\n /**\n * Stable error code matching the REST problem+json \"code\" field.\n *\n * @generated from field: ledger.read.v1.ErrorCode code = 1;\n */\n code: ErrorCode;\n};\n\n/**\n * Describes the message ledger.read.v1.ErrorDetail.\n * Use `create(ErrorDetailSchema)` to create a new message.\n */\nexport const ErrorDetailSchema: GenMessage<ErrorDetail> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 18);\n\n/**\n * Supported history windows for balance charts.\n *\n * @generated from enum ledger.read.v1.BalanceRange\n */\nexport enum BalanceRange {\n /**\n * @generated from enum value: RANGE_UNSPECIFIED = 0;\n */\n RANGE_UNSPECIFIED = 0,\n\n /**\n * 1 day\n *\n * @generated from enum value: DAY_1 = 1;\n */\n DAY_1 = 1,\n\n /**\n * 7 days\n *\n * @generated from enum value: DAY_7 = 2;\n */\n DAY_7 = 2,\n\n /**\n * 30 days\n *\n * @generated from enum value: DAY_30 = 3;\n */\n DAY_30 = 3,\n\n /**\n * 90 days\n *\n * @generated from enum value: DAY_90 = 4;\n */\n DAY_90 = 4,\n\n /**\n * 180 days\n *\n * @generated from enum value: DAY_180 = 5;\n */\n DAY_180 = 5,\n\n /**\n * 365 days\n *\n * @generated from enum value: DAY_365 = 6;\n */\n DAY_365 = 6,\n}\n\n/**\n * Describes the enum ledger.read.v1.BalanceRange.\n */\nexport const BalanceRangeSchema: GenEnum<BalanceRange> = /*@__PURE__*/\n enumDesc(file_ledger_read_v1_ledger_read, 0);\n\n/**\n * How to group equity series data.\n *\n * @generated from enum ledger.read.v1.EquityGroupBy\n */\nexport enum EquityGroupBy {\n /**\n * defaults to ACCOUNT\n *\n * @generated from enum value: GROUP_BY_UNSPECIFIED = 0;\n */\n GROUP_BY_UNSPECIFIED = 0,\n\n /**\n * group by account bucket\n *\n * @generated from enum value: GROUP_BY_ACCOUNT = 1;\n */\n GROUP_BY_ACCOUNT = 1,\n\n /**\n * group by asset (BTC, ETH, etc.)\n *\n * @generated from enum value: GROUP_BY_ASSET = 2;\n */\n GROUP_BY_ASSET = 2,\n}\n\n/**\n * Describes the enum ledger.read.v1.EquityGroupBy.\n */\nexport const EquityGroupBySchema: GenEnum<EquityGroupBy> = /*@__PURE__*/\n enumDesc(file_ledger_read_v1_ledger_read, 1);\n\n/**\n * TransferSideKind identifies the display class for one side of a transfer.\n *\n * @generated from enum ledger.read.v1.TransferSideKind\n */\nexport enum TransferSideKind {\n /**\n * Transfer side type was not specified.\n *\n * @generated from enum value: TRANSFER_SIDE_KIND_UNSPECIFIED = 0;\n */\n TRANSFER_SIDE_KIND_UNSPECIFIED = 0,\n\n /**\n * Polyester funding account.\n *\n * @generated from enum value: FUNDING_ACCOUNT = 1;\n */\n FUNDING_ACCOUNT = 1,\n\n /**\n * Polyester trading account.\n *\n * @generated from enum value: TRADING_ACCOUNT = 2;\n */\n TRADING_ACCOUNT = 2,\n\n /**\n * External wallet or chain address. The address is lifecycle-derived and may\n * be empty until ledger-to-lifecycle correlation is projected.\n *\n * @generated from enum value: EXTERNAL_ADDRESS = 3;\n */\n EXTERNAL_ADDRESS = 3,\n\n /**\n * Private off-chain counterparty that must not be identified to the caller.\n * account_id and address are intentionally omitted.\n *\n * @generated from enum value: PRIVATE_COUNTERPARTY = 4;\n */\n PRIVATE_COUNTERPARTY = 4,\n\n /**\n * Fee ledger side, for example spot or perp trading fees.\n *\n * @generated from enum value: FEE_ACCOUNT = 5;\n */\n FEE_ACCOUNT = 5,\n\n /**\n * System, operator, clearing, or other non-user side.\n *\n * @generated from enum value: SYSTEM_ACCOUNT = 6;\n */\n SYSTEM_ACCOUNT = 6,\n}\n\n/**\n * Describes the enum ledger.read.v1.TransferSideKind.\n */\nexport const TransferSideKindSchema: GenEnum<TransferSideKind> = /*@__PURE__*/\n enumDesc(file_ledger_read_v1_ledger_read, 2);\n\n/**\n * ErrorCode enumerates stable machine-readable error codes for the Ledger Read\n * API. These mirror the REST problem+json \"code\" field for parity between REST\n * and ConnectRPC clients.\n *\n * @generated from enum ledger.read.v1.ErrorCode\n */\nexport enum ErrorCode {\n /**\n * @generated from enum value: ERROR_CODE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: ERROR_CODE_BAD_REQUEST = 1;\n */\n BAD_REQUEST = 1,\n\n /**\n * @generated from enum value: ERROR_CODE_UNAUTHENTICATED = 2;\n */\n UNAUTHENTICATED = 2,\n\n /**\n * @generated from enum value: ERROR_CODE_PERMISSION_DENIED = 3;\n */\n PERMISSION_DENIED = 3,\n\n /**\n * @generated from enum value: ERROR_CODE_NOT_FOUND = 4;\n */\n NOT_FOUND = 4,\n\n /**\n * Missing or invalid account identifier (legacy; used by older endpoints).\n *\n * @generated from enum value: ERROR_CODE_MISSING_ACCOUNT_ID = 5;\n */\n MISSING_ACCOUNT_ID = 5,\n\n /**\n * @generated from enum value: ERROR_CODE_INVALID_ACCOUNT_ID = 6;\n */\n INVALID_ACCOUNT_ID = 6,\n\n /**\n * Wallet-specific errors for balance lookups by wallet.\n *\n * @generated from enum value: ERROR_CODE_MISSING_WALLET = 7;\n */\n MISSING_WALLET = 7,\n\n /**\n * @generated from enum value: ERROR_CODE_WALLET_RESOLUTION_UNAVAILABLE = 8;\n */\n WALLET_RESOLUTION_UNAVAILABLE = 8,\n\n /**\n * @generated from enum value: ERROR_CODE_WALLET_NOT_FOUND = 9;\n */\n WALLET_NOT_FOUND = 9,\n\n /**\n * Upstream dependency error (e.g., transfers store, wallet resolver).\n *\n * @generated from enum value: ERROR_CODE_UPSTREAM_ERROR = 10;\n */\n UPSTREAM_ERROR = 10,\n}\n\n/**\n * Describes the enum ledger.read.v1.ErrorCode.\n */\nexport const ErrorCodeSchema: GenEnum<ErrorCode> = /*@__PURE__*/\n enumDesc(file_ledger_read_v1_ledger_read, 3);\n\n/**\n * LedgerReadService exposes read-only ledger endpoints (balances, history, transfers, holds).\n *\n * @generated from service ledger.read.v1.LedgerReadService\n */\nexport const LedgerReadService: GenService<{\n /**\n * Retrieve balance history buckets for an account.\n * Supports optional subaccount, range, asset, and account-code filters.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.GetBalanceHistory\n */\n getBalanceHistory: {\n methodKind: \"unary\";\n input: typeof GetBalanceHistoryRequestSchema;\n output: typeof GetBalanceHistoryResponseSchema;\n },\n /**\n * Retrieve equity history as columnar series data.\n * Supports optional subaccount, range, account-code filtering, and grouping by account or asset.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.GetEquityHistorySeries\n */\n getEquityHistorySeries: {\n methodKind: \"unary\";\n input: typeof GetEquityHistorySeriesRequestSchema;\n output: typeof GetEquityHistorySeriesResponseSchema;\n },\n /**\n * List finalized transfer history for an account.\n * Supports optional subaccount, asset, ordering, and cursor filters.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.ListTransfers\n */\n listTransfers: {\n methodKind: \"unary\";\n input: typeof ListTransfersRequestSchema;\n output: typeof ListTransfersResponseSchema;\n },\n /**\n * ListHolds returns pending holds with integer amounts (u128) and asset ids.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.ListHolds\n */\n listHolds: {\n methodKind: \"unary\";\n input: typeof ListHoldsRequestSchema;\n output: typeof ListHoldsResponseSchema;\n },\n /**\n * Retrieve the latest balances for an account.\n * Supports optional subaccount scoping and returns asset symbols with decimal amounts on REST.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.GetBalances\n */\n getBalances: {\n methodKind: \"unary\";\n input: typeof GetBalancesRequestSchema;\n output: typeof GetBalancesResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_ledger_read_v1_ledger_read, 0);\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,MAAa,kCACX,uBAAS,gkLAAgkL,CAAC,wBAAwB,2BAA2B,CAAC;;;;;AAqBhoL,MAAa,2BACX,0BAAY,iCAAiC,CAAC;;;;;AAmEhD,MAAa,qBACX,0BAAY,iCAAiC,CAAC;;;;;AAoBhD,MAAa,4BACX,0BAAY,iCAAiC,CAAC;;;;;AA2ChD,MAAa,iCACX,0BAAY,iCAAiC,CAAC;;;;;AAqChD,MAAa,sBACX,0BAAY,iCAAiC,CAAC;;;;;AAuDhD,MAAa,kCACX,0BAAY,iCAAiC,CAAC;;;;;AA2BhD,MAAa,wBACX,0BAAY,iCAAiC,CAAC;;;;;AA2BhD,MAAa,sBACX,0BAAY,iCAAiC,CAAC;;;;;AA6ChD,MAAa,sCACX,0BAAY,iCAAiC,CAAC;;;;;AA6ChD,MAAa,qBACX,0BAAY,iCAAiC,CAAC;;;;;AAsEhD,MAAa,uCACX,0BAAY,iCAAiC,EAAE;;;;;AA0EjD,MAAa,6BACX,0BAAY,iCAAiC,EAAE;;;;;AA+CjD,MAAa,qBACX,0BAAY,iCAAiC,EAAE;;;;;AA6FjD,MAAa,oBACX,0BAAY,iCAAiC,EAAE;;;;;AA2BjD,MAAa,8BACX,0BAAY,iCAAiC,EAAE;;;;;AA0CjD,MAAa,yBACX,0BAAY,iCAAiC,EAAE;;;;;AAyCjD,MAAa,gBACX,0BAAY,iCAAiC,EAAE;;;;;AAyBjD,MAAa,0BACX,0BAAY,iCAAiC,EAAE;;;;;AAqBjD,MAAa,oBACX,0BAAY,iCAAiC,EAAE;;;;;;AAOjD,IAAY,eAAL,yBAAA,cAAA;;;;CAIL,aAAA,aAAA,uBAAA,KAAA;;;;;;CAOA,aAAA,aAAA,WAAA,KAAA;;;;;;CAOA,aAAA,aAAA,WAAA,KAAA;;;;;;CAOA,aAAA,aAAA,YAAA,KAAA;;;;;;CAOA,aAAA,aAAA,YAAA,KAAA;;;;;;CAOA,aAAA,aAAA,aAAA,KAAA;;;;;;CAOA,aAAA,aAAA,aAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,qBACX,uBAAS,iCAAiC,CAAC;;;;;;AAO7C,IAAY,gBAAL,yBAAA,eAAA;;;;;;CAML,cAAA,cAAA,0BAAA,KAAA;;;;;;CAOA,cAAA,cAAA,sBAAA,KAAA;;;;;;CAOA,cAAA,cAAA,oBAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,sBACX,uBAAS,iCAAiC,CAAC;;;;;;AAO7C,IAAY,mBAAL,yBAAA,kBAAA;;;;;;CAML,iBAAA,iBAAA,oCAAA,KAAA;;;;;;CAOA,iBAAA,iBAAA,qBAAA,KAAA;;;;;;CAOA,iBAAA,iBAAA,qBAAA,KAAA;;;;;;;CAQA,iBAAA,iBAAA,sBAAA,KAAA;;;;;;;CAQA,iBAAA,iBAAA,0BAAA,KAAA;;;;;;CAOA,iBAAA,iBAAA,iBAAA,KAAA;;;;;;CAOA,iBAAA,iBAAA,oBAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,yBACX,uBAAS,iCAAiC,CAAC;;;;;;;;AAS7C,IAAY,YAAL,yBAAA,WAAA;;;;CAIL,UAAA,UAAA,iBAAA,KAAA;;;;CAKA,UAAA,UAAA,iBAAA,KAAA;;;;CAKA,UAAA,UAAA,qBAAA,KAAA;;;;CAKA,UAAA,UAAA,uBAAA,KAAA;;;;CAKA,UAAA,UAAA,eAAA,KAAA;;;;;;CAOA,UAAA,UAAA,wBAAA,KAAA;;;;CAKA,UAAA,UAAA,wBAAA,KAAA;;;;;;CAOA,UAAA,UAAA,oBAAA,KAAA;;;;CAKA,UAAA,UAAA,mCAAA,KAAA;;;;CAKA,UAAA,UAAA,sBAAA,KAAA;;;;;;CAOA,UAAA,UAAA,oBAAA,MAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,kBACX,uBAAS,iCAAiC,CAAC;;;;;;AAO7C,MAAa,oBAwDX,0BAAY,iCAAiC,CAAC"}
|
|
@@ -258,15 +258,15 @@ function formatMarketMaxSlippage(scales, ticks, bps) {
|
|
|
258
258
|
}
|
|
259
259
|
function formatAttachedRisk(scales, risk) {
|
|
260
260
|
if (!risk) return void 0;
|
|
261
|
-
const takeProfit = risk.takeProfit?.policy || risk.takeProfit?.state ? {
|
|
261
|
+
const takeProfit = risk.takeProfit?.policy || risk.takeProfit?.state && risk.takeProfit.state.status !== 1 ? {
|
|
262
262
|
...risk.takeProfit.policy ? formatRiskLeg(scales, risk.takeProfit.policy) : void 0,
|
|
263
263
|
state: risk.takeProfit.state ? formatRiskLegState(risk.takeProfit.state) : void 0
|
|
264
264
|
} : void 0;
|
|
265
|
-
const stopLoss = risk.stopLoss?.policy || risk.stopLoss?.state ? {
|
|
265
|
+
const stopLoss = risk.stopLoss?.policy || risk.stopLoss?.state && risk.stopLoss.state.status !== 1 ? {
|
|
266
266
|
...risk.stopLoss.policy ? formatRiskLeg(scales, risk.stopLoss.policy) : void 0,
|
|
267
267
|
state: risk.stopLoss.state ? formatRiskLegState(risk.stopLoss.state) : void 0
|
|
268
268
|
} : void 0;
|
|
269
|
-
const trailingStop = risk.trailingStop?.policy || risk.trailingStop?.state ? {
|
|
269
|
+
const trailingStop = risk.trailingStop?.policy || risk.trailingStop?.state && risk.trailingStop.state.status !== 1 ? {
|
|
270
270
|
...risk.trailingStop.policy ? {
|
|
271
271
|
trailingDistance: formatTrailingDistance(scales, risk.trailingStop.policy.trailingDistance),
|
|
272
272
|
maxSlippage: formatTrailingMaxSlippage(scales, risk.trailingStop.policy.maxSlippage),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orders-risk.schemas.js","names":["ProtoWrite.RiskMarketIocSchema","ProtoWrite.RiskLimitGtcSchema","ProtoRead.AttachedRiskLegState_Status"],"sources":["../../../src/services/orders/orders-risk.schemas.ts"],"sourcesContent":["import * as ProtoWrite from \"../../gen/orders/v1/orders_pb.js\";\nimport * as ProtoRead from \"../../gen/orders/v1/orders_read_pb.js\";\nimport { create } from \"@bufbuild/protobuf\";\nimport * as v from \"valibot\";\nimport {\n BpsStringOrNumberInputSchema,\n NoneInputSchema,\n PriceDistanceInputSchema,\n PriceSlippageInputSchema,\n} from \"../shared.js\";\nimport {\n positiveDecimalInputToScaled,\n scaledToDecimalOutput,\n type SdkScales,\n} from \"../../shared/decimal-surface.js\";\nimport {\n MAX_SLIPPAGE_BPS,\n parseSlippageInput,\n parseTrailingDistanceInput,\n} from \"../trailing-oneof-inputs.js\";\nimport { requiredEnumLabel } from \"../../shared/proto-enum-codec.js\";\nimport { formatId } from \"../../utils/base58-id.js\";\nimport { tsNsToMs } from \"../../utils/time.js\";\nimport { AttachedRiskLegStatusCodec } from \"./orders.codecs.js\";\n\nconst DecimalInputStringSchema = v.pipe(v.string(), v.trim(), v.minLength(1));\n\nfunction attachedTriggerInputSchema(scales: SdkScales, fieldPrefix: \"takeProfit\" | \"stopLoss\") {\n return v.pipe(\n v.strictObject({\n triggerPrice: DecimalInputStringSchema,\n execution: v.variant(\"type\", [\n v.strictObject({\n type: v.literal(\"market_ioc\"),\n }),\n v.strictObject({\n type: v.literal(\"limit_gtc\"),\n price: DecimalInputStringSchema,\n }),\n ]),\n }),\n v.transform((input) => {\n const execution: ProtoWrite.RiskExecution[\"execution\"] =\n input.execution.type === \"market_ioc\"\n ? {\n case: \"marketIoc\",\n value: create(ProtoWrite.RiskMarketIocSchema),\n }\n : {\n case: \"limitGtc\",\n value: create(ProtoWrite.RiskLimitGtcSchema, {\n priceTicks: positiveDecimalInputToScaled(\n `${fieldPrefix}.execution.price`,\n input.execution.price,\n scales.price(),\n ),\n }),\n };\n return {\n triggerPriceTicks: positiveDecimalInputToScaled(\n `${fieldPrefix}.triggerPrice`,\n input.triggerPrice,\n scales.price(),\n ),\n child: { execution },\n };\n }),\n );\n}\n\nconst TrailingDistanceSchema = v.union([PriceDistanceInputSchema, BpsStringOrNumberInputSchema]);\n\nconst MaxSlippageSchema = v.union([\n PriceSlippageInputSchema,\n BpsStringOrNumberInputSchema,\n NoneInputSchema,\n]);\n\nexport const MarketMaxSlippageSchema = v.union([\n PriceSlippageInputSchema,\n BpsStringOrNumberInputSchema,\n NoneInputSchema,\n]);\n\nconst UNSET_TRAILING_STOP_MAX_SLIPPAGE: ProtoWrite.TrailingStopPolicy[\"maxSlippage\"] = {\n case: undefined,\n value: undefined,\n};\n\nfunction parseTrailingDistance(\n scales: SdkScales,\n distance: v.InferOutput<typeof TrailingDistanceSchema>,\n): ProtoWrite.TrailingStopPolicy[\"trailingDistance\"] {\n return parseTrailingDistanceInput(scales, distance, \"trailingStop.trailingDistance\");\n}\n\nfunction parseMaxSlippage(\n scales: SdkScales,\n slippage: v.InferOutput<typeof MaxSlippageSchema>,\n): ProtoWrite.TrailingStopPolicy[\"maxSlippage\"] {\n return parseSlippageInput(scales, slippage, {\n fieldName: \"trailingStop.maxSlippage\",\n ticksCase: \"maxSlippageTicks\",\n bpsCase: \"maxSlippageBps\",\n maxBps: MAX_SLIPPAGE_BPS,\n });\n}\n\nexport function parseMarketMaxSlippage(\n scales: SdkScales,\n slippage: v.InferOutput<typeof MarketMaxSlippageSchema> | undefined,\n): ProtoWrite.MarketIoc[\"maxSlippage\"] {\n return parseSlippageInput(scales, slippage, {\n fieldName: \"execution.maxSlippage\",\n ticksCase: \"maxSlippageTicks\",\n bpsCase: \"maxSlippageBps\",\n maxBps: MAX_SLIPPAGE_BPS,\n });\n}\n\nfunction createTrailingStopInputSchema(scales: SdkScales) {\n return v.pipe(\n v.strictObject({\n trailingDistance: TrailingDistanceSchema,\n maxSlippage: v.optional(MaxSlippageSchema),\n activationPrice: v.optional(DecimalInputStringSchema),\n }),\n v.transform((input) => ({\n trailingDistance: parseTrailingDistance(scales, input.trailingDistance),\n maxSlippage: input.maxSlippage\n ? parseMaxSlippage(scales, input.maxSlippage)\n : UNSET_TRAILING_STOP_MAX_SLIPPAGE,\n activationPriceTicks:\n input.activationPrice === undefined\n ? 0n\n : positiveDecimalInputToScaled(\n \"trailingStop.activationPrice\",\n input.activationPrice,\n scales.price(),\n ),\n })),\n );\n}\n\nfunction createRiskPolicyObjectInputSchema(scales: SdkScales) {\n const TakeProfitInputSchema = attachedTriggerInputSchema(scales, \"takeProfit\");\n const StopLossInputSchema = attachedTriggerInputSchema(scales, \"stopLoss\");\n const TrailingStopInputSchema = createTrailingStopInputSchema(scales);\n const InactiveOcoInputSchema = v.optional(\n v.literal(false, \"oco requires takeProfit and exactly one stop leg\"),\n );\n return v.union([\n v.strictObject({\n takeProfit: TakeProfitInputSchema,\n stopLoss: StopLossInputSchema,\n trailingStop: v.optional(v.never()),\n oco: v.optional(v.boolean()),\n }),\n v.strictObject({\n takeProfit: TakeProfitInputSchema,\n stopLoss: v.optional(v.never()),\n trailingStop: TrailingStopInputSchema,\n oco: v.optional(v.boolean()),\n }),\n v.strictObject({\n takeProfit: TakeProfitInputSchema,\n stopLoss: v.optional(v.never()),\n trailingStop: v.optional(v.never()),\n oco: InactiveOcoInputSchema,\n }),\n v.strictObject({\n takeProfit: v.optional(v.never()),\n stopLoss: StopLossInputSchema,\n trailingStop: v.optional(v.never()),\n oco: InactiveOcoInputSchema,\n }),\n v.strictObject({\n takeProfit: v.optional(v.never()),\n stopLoss: v.optional(v.never()),\n trailingStop: TrailingStopInputSchema,\n oco: InactiveOcoInputSchema,\n }),\n ]);\n}\n\ntype RiskPolicyObjectInput = v.InferOutput<ReturnType<typeof createRiskPolicyObjectInputSchema>>;\n\nfunction transformRiskPolicyInput(input: RiskPolicyObjectInput) {\n const stopLeg = input.stopLoss\n ? ({ case: \"stopLoss\", value: input.stopLoss } as const)\n : input.trailingStop\n ? ({ case: \"trailingStop\", value: input.trailingStop } as const)\n : ({ case: undefined, value: undefined } as const);\n return {\n takeProfit: input.takeProfit,\n stopLeg,\n oco: input.oco ?? false,\n };\n}\n\nexport function createRiskPolicyInputSchema(scales: SdkScales) {\n return v.pipe(\n v.optional(createRiskPolicyObjectInputSchema(scales)),\n v.transform((input) => (input ? transformRiskPolicyInput(input) : undefined)),\n );\n}\n\nexport function createRequiredRiskPolicyInputSchema(scales: SdkScales) {\n return v.pipe(\n createRiskPolicyObjectInputSchema(scales),\n v.transform((input) => transformRiskPolicyInput(input)),\n );\n}\n\nexport type TakeProfitInput = v.InferInput<ReturnType<typeof attachedTriggerInputSchema>>;\nexport type StopLossInput = v.InferInput<ReturnType<typeof attachedTriggerInputSchema>>;\nexport type TrailingStopInput = v.InferInput<ReturnType<typeof createTrailingStopInputSchema>>;\nexport type RiskPolicyInput = v.InferInput<ReturnType<typeof createRiskPolicyInputSchema>>;\n\ntype TrailingDistance =\n | { kind: \"distance\"; distance: string }\n | { kind: \"bps\"; bps: number }\n | { kind: \"none\" };\ntype TrailingMaxSlippage = { kind: \"slippage\"; slippage: string } | { kind: \"bps\"; bps: number };\nexport type MarketMaxSlippage =\n | { kind: \"slippage\"; slippage: string }\n | { kind: \"bps\"; bps: number };\n\nconst ReadRiskExecutionSchema = v.object({\n execution: v.variant(\"case\", [\n v.object({\n case: v.literal(\"marketIoc\"),\n value: v.object({}),\n }),\n v.object({\n case: v.literal(\"limitGtc\"),\n value: v.object({\n priceTicks: v.bigint(),\n }),\n }),\n ]),\n});\n\nconst ReadTakeProfitPolicySchema = v.object({\n triggerPriceTicks: v.bigint(),\n child: ReadRiskExecutionSchema,\n});\n\nconst ReadStopLossPolicySchema = v.object({\n triggerPriceTicks: v.bigint(),\n child: ReadRiskExecutionSchema,\n});\n\nconst ReadTrailingStopPolicySchema = v.object({\n trailingDistance: v.object({\n case: v.optional(\n v.union([\n v.literal(\"trailingDistanceTicks\"),\n v.literal(\"trailingDistanceBps\"),\n v.undefined(),\n ]),\n ),\n value: v.optional(v.union([v.bigint(), v.number(), v.undefined()])),\n }),\n maxSlippage: v.object({\n case: v.union([v.literal(\"maxSlippageTicks\"), v.literal(\"maxSlippageBps\"), v.undefined()]),\n value: v.optional(v.union([v.number(), v.undefined()])),\n }),\n activationPriceTicks: v.bigint(),\n});\n\nconst ReadAttachedRiskLegStateSchema = v.object({\n status: v.enum(ProtoRead.AttachedRiskLegState_Status),\n armedTsNs: v.bigint(),\n terminalTsNs: v.bigint(),\n triggerId: v.optional(v.bigint()),\n childOrderId: v.optional(v.bigint()),\n});\n\nconst ReadAttachedRiskTakeProfitSchema = v.object({\n policy: v.optional(ReadTakeProfitPolicySchema),\n state: v.optional(ReadAttachedRiskLegStateSchema),\n});\n\nconst ReadAttachedRiskStopLossSchema = v.object({\n policy: v.optional(ReadStopLossPolicySchema),\n state: v.optional(ReadAttachedRiskLegStateSchema),\n});\n\nconst ReadAttachedRiskTrailingStopSchema = v.object({\n policy: v.optional(ReadTrailingStopPolicySchema),\n state: v.optional(ReadAttachedRiskLegStateSchema),\n});\n\nexport const ReadAttachedRiskSchema = v.object({\n takeProfit: v.optional(ReadAttachedRiskTakeProfitSchema),\n stopLoss: v.optional(ReadAttachedRiskStopLossSchema),\n trailingStop: v.optional(ReadAttachedRiskTrailingStopSchema),\n oco: v.optional(v.boolean(), false),\n});\n\nfunction formatRiskExecution(\n scales: SdkScales,\n child: v.InferOutput<typeof ReadRiskExecutionSchema>,\n) {\n if (child.execution.case === \"marketIoc\") {\n return { type: \"market_ioc\" } as const;\n }\n return {\n type: \"limit_gtc\",\n price: scaledToDecimalOutput(child.execution.value.priceTicks, scales.price()),\n } as const;\n}\n\nfunction formatRiskLeg(\n scales: SdkScales,\n leg:\n | v.InferOutput<typeof ReadTakeProfitPolicySchema>\n | v.InferOutput<typeof ReadStopLossPolicySchema>,\n) {\n return {\n triggerPrice: scaledToDecimalOutput(leg.triggerPriceTicks, scales.price()),\n execution: formatRiskExecution(scales, leg.child),\n };\n}\n\nfunction formatRiskLegState(state: v.InferOutput<typeof ReadAttachedRiskLegStateSchema>) {\n return {\n status: requiredEnumLabel(\n AttachedRiskLegStatusCodec.protoToOutput,\n state.status,\n \"AttachedRiskLegStateSchema\",\n \"status\",\n ),\n armedTs: state.armedTsNs > 0n ? tsNsToMs(state.armedTsNs) : undefined,\n armedTsNs: state.armedTsNs > 0n ? state.armedTsNs.toString() : undefined,\n terminalTs: state.terminalTsNs > 0n ? tsNsToMs(state.terminalTsNs) : undefined,\n terminalTsNs: state.terminalTsNs > 0n ? state.terminalTsNs.toString() : undefined,\n triggerId:\n state.triggerId !== undefined && state.triggerId > 0n\n ? formatId(state.triggerId)\n : undefined,\n childOrderId:\n state.childOrderId !== undefined && state.childOrderId > 0n\n ? formatId(state.childOrderId)\n : undefined,\n };\n}\n\nfunction formatTrailingDistance(\n scales: SdkScales,\n distance: v.InferOutput<typeof ReadTrailingStopPolicySchema>[\"trailingDistance\"],\n): TrailingDistance {\n if (distance.case === \"trailingDistanceTicks\" && typeof distance.value === \"bigint\") {\n return {\n kind: \"distance\",\n distance: scaledToDecimalOutput(distance.value, scales.price()),\n };\n }\n if (distance.case === \"trailingDistanceBps\" && typeof distance.value === \"number\") {\n return { kind: \"bps\", bps: distance.value };\n }\n return { kind: \"none\" };\n}\n\nfunction formatTrailingMaxSlippage(\n scales: SdkScales,\n slippage: v.InferOutput<typeof ReadTrailingStopPolicySchema>[\"maxSlippage\"],\n): TrailingMaxSlippage | undefined {\n if (slippage.case === \"maxSlippageTicks\" && typeof slippage.value === \"number\") {\n return {\n kind: \"slippage\",\n slippage: scaledToDecimalOutput(BigInt(slippage.value), scales.price()),\n };\n }\n if (slippage.case === \"maxSlippageBps\" && typeof slippage.value === \"number\") {\n return { kind: \"bps\", bps: slippage.value };\n }\n return undefined;\n}\n\nexport function formatMarketMaxSlippage(\n scales: SdkScales,\n ticks: number,\n bps: number,\n): MarketMaxSlippage | undefined {\n if (ticks > 0) {\n return { kind: \"slippage\", slippage: scaledToDecimalOutput(BigInt(ticks), scales.price()) };\n }\n if (bps > 0) {\n return { kind: \"bps\", bps };\n }\n return undefined;\n}\n\nexport function formatAttachedRisk(\n scales: SdkScales,\n risk: v.InferOutput<typeof ReadAttachedRiskSchema> | undefined,\n) {\n if (!risk) return undefined;\n\n const takeProfit =\n risk.takeProfit?.policy || risk.takeProfit?.state\n ? {\n ...(risk.takeProfit.policy\n ? formatRiskLeg(scales, risk.takeProfit.policy)\n : undefined),\n state: risk.takeProfit.state\n ? formatRiskLegState(risk.takeProfit.state)\n : undefined,\n }\n : undefined;\n const stopLoss =\n risk.stopLoss?.policy || risk.stopLoss?.state\n ? {\n ...(risk.stopLoss.policy\n ? formatRiskLeg(scales, risk.stopLoss.policy)\n : undefined),\n state: risk.stopLoss.state ? formatRiskLegState(risk.stopLoss.state) : undefined,\n }\n : undefined;\n const trailingStop =\n risk.trailingStop?.policy || risk.trailingStop?.state\n ? {\n ...(risk.trailingStop.policy\n ? {\n trailingDistance: formatTrailingDistance(\n scales,\n risk.trailingStop.policy.trailingDistance,\n ),\n maxSlippage: formatTrailingMaxSlippage(\n scales,\n risk.trailingStop.policy.maxSlippage,\n ),\n activationPrice:\n risk.trailingStop.policy.activationPriceTicks > 0n\n ? scaledToDecimalOutput(\n risk.trailingStop.policy.activationPriceTicks,\n scales.price(),\n )\n : undefined,\n }\n : undefined),\n state: risk.trailingStop.state\n ? formatRiskLegState(risk.trailingStop.state)\n : undefined,\n }\n : undefined;\n\n if (!takeProfit && !stopLoss && !trailingStop) return undefined;\n\n return {\n takeProfit,\n stopLoss,\n trailingStop,\n oco: risk.oco,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"orders-risk.schemas.js","names":["ProtoWrite.RiskMarketIocSchema","ProtoWrite.RiskLimitGtcSchema","ProtoRead.AttachedRiskLegState_Status"],"sources":["../../../src/services/orders/orders-risk.schemas.ts"],"sourcesContent":["import * as ProtoWrite from \"../../gen/orders/v1/orders_pb.js\";\nimport * as ProtoRead from \"../../gen/orders/v1/orders_read_pb.js\";\nimport { create } from \"@bufbuild/protobuf\";\nimport * as v from \"valibot\";\nimport {\n BpsStringOrNumberInputSchema,\n NoneInputSchema,\n PriceDistanceInputSchema,\n PriceSlippageInputSchema,\n} from \"../shared.js\";\nimport {\n positiveDecimalInputToScaled,\n scaledToDecimalOutput,\n type SdkScales,\n} from \"../../shared/decimal-surface.js\";\nimport {\n MAX_SLIPPAGE_BPS,\n parseSlippageInput,\n parseTrailingDistanceInput,\n} from \"../trailing-oneof-inputs.js\";\nimport { requiredEnumLabel } from \"../../shared/proto-enum-codec.js\";\nimport { formatId } from \"../../utils/base58-id.js\";\nimport { tsNsToMs } from \"../../utils/time.js\";\nimport { AttachedRiskLegStatusCodec } from \"./orders.codecs.js\";\n\nconst DecimalInputStringSchema = v.pipe(v.string(), v.trim(), v.minLength(1));\n\nfunction attachedTriggerInputSchema(scales: SdkScales, fieldPrefix: \"takeProfit\" | \"stopLoss\") {\n return v.pipe(\n v.strictObject({\n triggerPrice: DecimalInputStringSchema,\n execution: v.variant(\"type\", [\n v.strictObject({\n type: v.literal(\"market_ioc\"),\n }),\n v.strictObject({\n type: v.literal(\"limit_gtc\"),\n price: DecimalInputStringSchema,\n }),\n ]),\n }),\n v.transform((input) => {\n const execution: ProtoWrite.RiskExecution[\"execution\"] =\n input.execution.type === \"market_ioc\"\n ? {\n case: \"marketIoc\",\n value: create(ProtoWrite.RiskMarketIocSchema),\n }\n : {\n case: \"limitGtc\",\n value: create(ProtoWrite.RiskLimitGtcSchema, {\n priceTicks: positiveDecimalInputToScaled(\n `${fieldPrefix}.execution.price`,\n input.execution.price,\n scales.price(),\n ),\n }),\n };\n return {\n triggerPriceTicks: positiveDecimalInputToScaled(\n `${fieldPrefix}.triggerPrice`,\n input.triggerPrice,\n scales.price(),\n ),\n child: { execution },\n };\n }),\n );\n}\n\nconst TrailingDistanceSchema = v.union([PriceDistanceInputSchema, BpsStringOrNumberInputSchema]);\n\nconst MaxSlippageSchema = v.union([\n PriceSlippageInputSchema,\n BpsStringOrNumberInputSchema,\n NoneInputSchema,\n]);\n\nexport const MarketMaxSlippageSchema = v.union([\n PriceSlippageInputSchema,\n BpsStringOrNumberInputSchema,\n NoneInputSchema,\n]);\n\nconst UNSET_TRAILING_STOP_MAX_SLIPPAGE: ProtoWrite.TrailingStopPolicy[\"maxSlippage\"] = {\n case: undefined,\n value: undefined,\n};\n\nfunction parseTrailingDistance(\n scales: SdkScales,\n distance: v.InferOutput<typeof TrailingDistanceSchema>,\n): ProtoWrite.TrailingStopPolicy[\"trailingDistance\"] {\n return parseTrailingDistanceInput(scales, distance, \"trailingStop.trailingDistance\");\n}\n\nfunction parseMaxSlippage(\n scales: SdkScales,\n slippage: v.InferOutput<typeof MaxSlippageSchema>,\n): ProtoWrite.TrailingStopPolicy[\"maxSlippage\"] {\n return parseSlippageInput(scales, slippage, {\n fieldName: \"trailingStop.maxSlippage\",\n ticksCase: \"maxSlippageTicks\",\n bpsCase: \"maxSlippageBps\",\n maxBps: MAX_SLIPPAGE_BPS,\n });\n}\n\nexport function parseMarketMaxSlippage(\n scales: SdkScales,\n slippage: v.InferOutput<typeof MarketMaxSlippageSchema> | undefined,\n): ProtoWrite.MarketIoc[\"maxSlippage\"] {\n return parseSlippageInput(scales, slippage, {\n fieldName: \"execution.maxSlippage\",\n ticksCase: \"maxSlippageTicks\",\n bpsCase: \"maxSlippageBps\",\n maxBps: MAX_SLIPPAGE_BPS,\n });\n}\n\nfunction createTrailingStopInputSchema(scales: SdkScales) {\n return v.pipe(\n v.strictObject({\n trailingDistance: TrailingDistanceSchema,\n maxSlippage: v.optional(MaxSlippageSchema),\n activationPrice: v.optional(DecimalInputStringSchema),\n }),\n v.transform((input) => ({\n trailingDistance: parseTrailingDistance(scales, input.trailingDistance),\n maxSlippage: input.maxSlippage\n ? parseMaxSlippage(scales, input.maxSlippage)\n : UNSET_TRAILING_STOP_MAX_SLIPPAGE,\n activationPriceTicks:\n input.activationPrice === undefined\n ? 0n\n : positiveDecimalInputToScaled(\n \"trailingStop.activationPrice\",\n input.activationPrice,\n scales.price(),\n ),\n })),\n );\n}\n\nfunction createRiskPolicyObjectInputSchema(scales: SdkScales) {\n const TakeProfitInputSchema = attachedTriggerInputSchema(scales, \"takeProfit\");\n const StopLossInputSchema = attachedTriggerInputSchema(scales, \"stopLoss\");\n const TrailingStopInputSchema = createTrailingStopInputSchema(scales);\n const InactiveOcoInputSchema = v.optional(\n v.literal(false, \"oco requires takeProfit and exactly one stop leg\"),\n );\n return v.union([\n v.strictObject({\n takeProfit: TakeProfitInputSchema,\n stopLoss: StopLossInputSchema,\n trailingStop: v.optional(v.never()),\n oco: v.optional(v.boolean()),\n }),\n v.strictObject({\n takeProfit: TakeProfitInputSchema,\n stopLoss: v.optional(v.never()),\n trailingStop: TrailingStopInputSchema,\n oco: v.optional(v.boolean()),\n }),\n v.strictObject({\n takeProfit: TakeProfitInputSchema,\n stopLoss: v.optional(v.never()),\n trailingStop: v.optional(v.never()),\n oco: InactiveOcoInputSchema,\n }),\n v.strictObject({\n takeProfit: v.optional(v.never()),\n stopLoss: StopLossInputSchema,\n trailingStop: v.optional(v.never()),\n oco: InactiveOcoInputSchema,\n }),\n v.strictObject({\n takeProfit: v.optional(v.never()),\n stopLoss: v.optional(v.never()),\n trailingStop: TrailingStopInputSchema,\n oco: InactiveOcoInputSchema,\n }),\n ]);\n}\n\ntype RiskPolicyObjectInput = v.InferOutput<ReturnType<typeof createRiskPolicyObjectInputSchema>>;\n\nfunction transformRiskPolicyInput(input: RiskPolicyObjectInput) {\n const stopLeg = input.stopLoss\n ? ({ case: \"stopLoss\", value: input.stopLoss } as const)\n : input.trailingStop\n ? ({ case: \"trailingStop\", value: input.trailingStop } as const)\n : ({ case: undefined, value: undefined } as const);\n return {\n takeProfit: input.takeProfit,\n stopLeg,\n oco: input.oco ?? false,\n };\n}\n\nexport function createRiskPolicyInputSchema(scales: SdkScales) {\n return v.pipe(\n v.optional(createRiskPolicyObjectInputSchema(scales)),\n v.transform((input) => (input ? transformRiskPolicyInput(input) : undefined)),\n );\n}\n\nexport function createRequiredRiskPolicyInputSchema(scales: SdkScales) {\n return v.pipe(\n createRiskPolicyObjectInputSchema(scales),\n v.transform((input) => transformRiskPolicyInput(input)),\n );\n}\n\nexport type TakeProfitInput = v.InferInput<ReturnType<typeof attachedTriggerInputSchema>>;\nexport type StopLossInput = v.InferInput<ReturnType<typeof attachedTriggerInputSchema>>;\nexport type TrailingStopInput = v.InferInput<ReturnType<typeof createTrailingStopInputSchema>>;\nexport type RiskPolicyInput = v.InferInput<ReturnType<typeof createRiskPolicyInputSchema>>;\n\ntype TrailingDistance =\n | { kind: \"distance\"; distance: string }\n | { kind: \"bps\"; bps: number }\n | { kind: \"none\" };\ntype TrailingMaxSlippage = { kind: \"slippage\"; slippage: string } | { kind: \"bps\"; bps: number };\nexport type MarketMaxSlippage =\n | { kind: \"slippage\"; slippage: string }\n | { kind: \"bps\"; bps: number };\n\nconst ReadRiskExecutionSchema = v.object({\n execution: v.variant(\"case\", [\n v.object({\n case: v.literal(\"marketIoc\"),\n value: v.object({}),\n }),\n v.object({\n case: v.literal(\"limitGtc\"),\n value: v.object({\n priceTicks: v.bigint(),\n }),\n }),\n ]),\n});\n\nconst ReadTakeProfitPolicySchema = v.object({\n triggerPriceTicks: v.bigint(),\n child: ReadRiskExecutionSchema,\n});\n\nconst ReadStopLossPolicySchema = v.object({\n triggerPriceTicks: v.bigint(),\n child: ReadRiskExecutionSchema,\n});\n\nconst ReadTrailingStopPolicySchema = v.object({\n trailingDistance: v.object({\n case: v.optional(\n v.union([\n v.literal(\"trailingDistanceTicks\"),\n v.literal(\"trailingDistanceBps\"),\n v.undefined(),\n ]),\n ),\n value: v.optional(v.union([v.bigint(), v.number(), v.undefined()])),\n }),\n maxSlippage: v.object({\n case: v.union([v.literal(\"maxSlippageTicks\"), v.literal(\"maxSlippageBps\"), v.undefined()]),\n value: v.optional(v.union([v.number(), v.undefined()])),\n }),\n activationPriceTicks: v.bigint(),\n});\n\nconst ReadAttachedRiskLegStateSchema = v.object({\n status: v.enum(ProtoRead.AttachedRiskLegState_Status),\n armedTsNs: v.bigint(),\n terminalTsNs: v.bigint(),\n triggerId: v.optional(v.bigint()),\n childOrderId: v.optional(v.bigint()),\n});\n\nconst ReadAttachedRiskTakeProfitSchema = v.object({\n policy: v.optional(ReadTakeProfitPolicySchema),\n state: v.optional(ReadAttachedRiskLegStateSchema),\n});\n\nconst ReadAttachedRiskStopLossSchema = v.object({\n policy: v.optional(ReadStopLossPolicySchema),\n state: v.optional(ReadAttachedRiskLegStateSchema),\n});\n\nconst ReadAttachedRiskTrailingStopSchema = v.object({\n policy: v.optional(ReadTrailingStopPolicySchema),\n state: v.optional(ReadAttachedRiskLegStateSchema),\n});\n\nexport const ReadAttachedRiskSchema = v.object({\n takeProfit: v.optional(ReadAttachedRiskTakeProfitSchema),\n stopLoss: v.optional(ReadAttachedRiskStopLossSchema),\n trailingStop: v.optional(ReadAttachedRiskTrailingStopSchema),\n oco: v.optional(v.boolean(), false),\n});\n\nfunction formatRiskExecution(\n scales: SdkScales,\n child: v.InferOutput<typeof ReadRiskExecutionSchema>,\n) {\n if (child.execution.case === \"marketIoc\") {\n return { type: \"market_ioc\" } as const;\n }\n return {\n type: \"limit_gtc\",\n price: scaledToDecimalOutput(child.execution.value.priceTicks, scales.price()),\n } as const;\n}\n\nfunction formatRiskLeg(\n scales: SdkScales,\n leg:\n | v.InferOutput<typeof ReadTakeProfitPolicySchema>\n | v.InferOutput<typeof ReadStopLossPolicySchema>,\n) {\n return {\n triggerPrice: scaledToDecimalOutput(leg.triggerPriceTicks, scales.price()),\n execution: formatRiskExecution(scales, leg.child),\n };\n}\n\nfunction formatRiskLegState(state: v.InferOutput<typeof ReadAttachedRiskLegStateSchema>) {\n return {\n status: requiredEnumLabel(\n AttachedRiskLegStatusCodec.protoToOutput,\n state.status,\n \"AttachedRiskLegStateSchema\",\n \"status\",\n ),\n armedTs: state.armedTsNs > 0n ? tsNsToMs(state.armedTsNs) : undefined,\n armedTsNs: state.armedTsNs > 0n ? state.armedTsNs.toString() : undefined,\n terminalTs: state.terminalTsNs > 0n ? tsNsToMs(state.terminalTsNs) : undefined,\n terminalTsNs: state.terminalTsNs > 0n ? state.terminalTsNs.toString() : undefined,\n triggerId:\n state.triggerId !== undefined && state.triggerId > 0n\n ? formatId(state.triggerId)\n : undefined,\n childOrderId:\n state.childOrderId !== undefined && state.childOrderId > 0n\n ? formatId(state.childOrderId)\n : undefined,\n };\n}\n\nfunction formatTrailingDistance(\n scales: SdkScales,\n distance: v.InferOutput<typeof ReadTrailingStopPolicySchema>[\"trailingDistance\"],\n): TrailingDistance {\n if (distance.case === \"trailingDistanceTicks\" && typeof distance.value === \"bigint\") {\n return {\n kind: \"distance\",\n distance: scaledToDecimalOutput(distance.value, scales.price()),\n };\n }\n if (distance.case === \"trailingDistanceBps\" && typeof distance.value === \"number\") {\n return { kind: \"bps\", bps: distance.value };\n }\n return { kind: \"none\" };\n}\n\nfunction formatTrailingMaxSlippage(\n scales: SdkScales,\n slippage: v.InferOutput<typeof ReadTrailingStopPolicySchema>[\"maxSlippage\"],\n): TrailingMaxSlippage | undefined {\n if (slippage.case === \"maxSlippageTicks\" && typeof slippage.value === \"number\") {\n return {\n kind: \"slippage\",\n slippage: scaledToDecimalOutput(BigInt(slippage.value), scales.price()),\n };\n }\n if (slippage.case === \"maxSlippageBps\" && typeof slippage.value === \"number\") {\n return { kind: \"bps\", bps: slippage.value };\n }\n return undefined;\n}\n\nexport function formatMarketMaxSlippage(\n scales: SdkScales,\n ticks: number,\n bps: number,\n): MarketMaxSlippage | undefined {\n if (ticks > 0) {\n return { kind: \"slippage\", slippage: scaledToDecimalOutput(BigInt(ticks), scales.price()) };\n }\n if (bps > 0) {\n return { kind: \"bps\", bps };\n }\n return undefined;\n}\n\nexport function formatAttachedRisk(\n scales: SdkScales,\n risk: v.InferOutput<typeof ReadAttachedRiskSchema> | undefined,\n) {\n if (!risk) return undefined;\n\n const takeProfit =\n risk.takeProfit?.policy ||\n (risk.takeProfit?.state &&\n risk.takeProfit.state.status !== ProtoRead.AttachedRiskLegState_Status.NOT_CONFIGURED)\n ? {\n ...(risk.takeProfit.policy\n ? formatRiskLeg(scales, risk.takeProfit.policy)\n : undefined),\n state: risk.takeProfit.state\n ? formatRiskLegState(risk.takeProfit.state)\n : undefined,\n }\n : undefined;\n const stopLoss =\n risk.stopLoss?.policy ||\n (risk.stopLoss?.state &&\n risk.stopLoss.state.status !== ProtoRead.AttachedRiskLegState_Status.NOT_CONFIGURED)\n ? {\n ...(risk.stopLoss.policy\n ? formatRiskLeg(scales, risk.stopLoss.policy)\n : undefined),\n state: risk.stopLoss.state ? formatRiskLegState(risk.stopLoss.state) : undefined,\n }\n : undefined;\n const trailingStop =\n risk.trailingStop?.policy ||\n (risk.trailingStop?.state &&\n risk.trailingStop.state.status !== ProtoRead.AttachedRiskLegState_Status.NOT_CONFIGURED)\n ? {\n ...(risk.trailingStop.policy\n ? {\n trailingDistance: formatTrailingDistance(\n scales,\n risk.trailingStop.policy.trailingDistance,\n ),\n maxSlippage: formatTrailingMaxSlippage(\n scales,\n risk.trailingStop.policy.maxSlippage,\n ),\n activationPrice:\n risk.trailingStop.policy.activationPriceTicks > 0n\n ? scaledToDecimalOutput(\n risk.trailingStop.policy.activationPriceTicks,\n scales.price(),\n )\n : undefined,\n }\n : undefined),\n state: risk.trailingStop.state\n ? formatRiskLegState(risk.trailingStop.state)\n : undefined,\n }\n : undefined;\n\n if (!takeProfit && !stopLoss && !trailingStop) return undefined;\n\n return {\n takeProfit,\n stopLoss,\n trailingStop,\n oco: risk.oco,\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { CreateSubaccountInput, CreateSubaccountInputSchema, CreateSubaccountResult, CreateSubaccountResultSchema,
|
|
1
|
+
import { CreateSubaccountInput, CreateSubaccountInputSchema, CreateSubaccountResult, CreateSubaccountResultSchema, EffectiveSubaccountPermissions, EffectiveSubaccountPermissionsSchema, InviteSubaccountMemberInput, InviteSubaccountMemberInputSchema, ListSubaccountInvitesInput, ListSubaccountInvitesInputSchema, RemoveSubaccountMemberInput, RemoveSubaccountMemberInputSchema, RespondSubaccountInviteInput, RespondSubaccountInviteInputSchema, SetSubaccountMemberMfaRequirementInput, SetSubaccountMemberMfaRequirementInputSchema, Subaccount, SubaccountActivityEventSchema, SubaccountActivityInput, SubaccountActivityInputSchema, SubaccountEvent, SubaccountIdInput, SubaccountIdInputSchema, SubaccountInvite, SubaccountInviteSchema, SubaccountInviteStatus, SubaccountMember, SubaccountMemberSchema, SubaccountMutationResult, SubaccountMutationResultSchema, SubaccountPermission, SubaccountPermissionDefinition, SubaccountPermissionDefinitionSchema, SubaccountRole, SubaccountRoleCatalog, SubaccountRoleCatalogSchema, SubaccountRoleDefinition, SubaccountRoleDefinitionSchema, SubaccountRoleSchema, SubaccountSchema, SubaccountStatus, UpdateSubaccountInput, UpdateSubaccountInputSchema, UpdateSubaccountMemberRoleInput, UpdateSubaccountMemberRoleInputSchema } from "./subaccounts.schemas.js";
|
|
2
2
|
import { SubaccountsService } from "./subaccounts.js";
|
|
3
|
-
export { CreateSubaccountInput, CreateSubaccountInputSchema, CreateSubaccountResult, CreateSubaccountResultSchema,
|
|
3
|
+
export { CreateSubaccountInput, CreateSubaccountInputSchema, CreateSubaccountResult, CreateSubaccountResultSchema, EffectiveSubaccountPermissions, EffectiveSubaccountPermissionsSchema, InviteSubaccountMemberInput, InviteSubaccountMemberInputSchema, ListSubaccountInvitesInput, ListSubaccountInvitesInputSchema, RemoveSubaccountMemberInput, RemoveSubaccountMemberInputSchema, RespondSubaccountInviteInput, RespondSubaccountInviteInputSchema, SetSubaccountMemberMfaRequirementInput, SetSubaccountMemberMfaRequirementInputSchema, Subaccount, SubaccountActivityEventSchema, SubaccountActivityInput, SubaccountActivityInputSchema, SubaccountEvent, SubaccountIdInput, SubaccountIdInputSchema, SubaccountInvite, SubaccountInviteSchema, SubaccountInviteStatus, SubaccountMember, SubaccountMemberSchema, SubaccountMutationResult, SubaccountMutationResultSchema, SubaccountPermission, SubaccountPermissionDefinition, SubaccountPermissionDefinitionSchema, SubaccountRole, SubaccountRoleCatalog, SubaccountRoleCatalogSchema, SubaccountRoleDefinition, SubaccountRoleDefinitionSchema, SubaccountRoleSchema, SubaccountSchema, SubaccountStatus, SubaccountsService, UpdateSubaccountInput, UpdateSubaccountInputSchema, UpdateSubaccountMemberRoleInput, UpdateSubaccountMemberRoleInputSchema };
|
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
import "../../gen/auth/v1/subaccounts_pb.js";
|
|
2
2
|
//#region src/services/subaccounts/subaccounts.codecs.ts
|
|
3
|
-
const SUBACCOUNT_STATUS_VALUES = [
|
|
4
|
-
"active",
|
|
5
|
-
"disabled",
|
|
6
|
-
"deleted"
|
|
7
|
-
];
|
|
3
|
+
const SUBACCOUNT_STATUS_VALUES = ["active", "disabled"];
|
|
8
4
|
const SubaccountStatusProto = {
|
|
9
5
|
ACTIVE: "active",
|
|
10
|
-
DISABLED: "disabled"
|
|
11
|
-
DELETED: "deleted"
|
|
6
|
+
DISABLED: "disabled"
|
|
12
7
|
};
|
|
13
8
|
const SubaccountRoleCodec = {
|
|
14
9
|
inputToProto: {
|
|
@@ -72,13 +67,11 @@ const InviteStatusCodec = { protoToOutput: {
|
|
|
72
67
|
const SubaccountStatusCodec = {
|
|
73
68
|
inputToProto: {
|
|
74
69
|
active: SubaccountStatusProto.ACTIVE,
|
|
75
|
-
disabled: SubaccountStatusProto.DISABLED
|
|
76
|
-
deleted: SubaccountStatusProto.DELETED
|
|
70
|
+
disabled: SubaccountStatusProto.DISABLED
|
|
77
71
|
},
|
|
78
72
|
protoToOutput: {
|
|
79
73
|
[SubaccountStatusProto.ACTIVE]: "active",
|
|
80
|
-
[SubaccountStatusProto.DISABLED]: "disabled"
|
|
81
|
-
[SubaccountStatusProto.DELETED]: "deleted"
|
|
74
|
+
[SubaccountStatusProto.DISABLED]: "disabled"
|
|
82
75
|
}
|
|
83
76
|
};
|
|
84
77
|
const ActivityEntityKindCodec = { protoToOutput: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subaccounts.codecs.js","names":[],"sources":["../../../src/services/subaccounts/subaccounts.codecs.ts"],"sourcesContent":["import * as Proto from \"../../gen/auth/v1/subaccounts_pb.js\";\nimport type { InputToProto, ProtoToOutput } from \"../../utils/types.js\";\n\nexport const SUBACCOUNT_ROLE_VALUES = [\n \"owner\",\n \"admin\",\n \"treasury\",\n \"leveraged_trader\",\n \"trader\",\n \"viewer\",\n] as const;\nexport type SubaccountRoleValue = (typeof SUBACCOUNT_ROLE_VALUES)[number];\n\nexport const SUBACCOUNT_PERMISSION_VALUES = [\n \"read_subaccount\",\n \"update_subaccount\",\n \"read_balances\",\n \"read_spot\",\n \"trade_spot\",\n \"read_internal_transfers\",\n \"internal_transfer\",\n \"external_withdraw\",\n \"read_address_book\",\n \"manage_address_book\",\n \"read_members\",\n \"manage_members\",\n \"read_invites\",\n \"manage_invites\",\n \"read_api_keys\",\n \"manage_api_keys\",\n \"read_subaccount_policy\",\n \"manage_subaccount_policy\",\n \"read_activity\",\n \"read_activity_security_details\",\n \"manage_member_mfa_requirement\",\n \"create_deposit_address\",\n \"read_deposit_addresses\",\n \"read_guard_signer_status\",\n \"manage_guard_signer\",\n] as const;\nexport type SubaccountPermissionValue = (typeof SUBACCOUNT_PERMISSION_VALUES)[number];\n\nexport const SUBACCOUNT_INVITE_ACTION_VALUES = [\"accept\", \"decline\", \"cancel\"] as const;\nexport type SubaccountInviteActionValue = (typeof SUBACCOUNT_INVITE_ACTION_VALUES)[number];\n\nexport const SUBACCOUNT_INVITE_STATUS_VALUES = [\n \"pending\",\n \"accepted\",\n \"declined\",\n \"cancelled\",\n] as const;\nexport type SubaccountInviteStatusValue = (typeof SUBACCOUNT_INVITE_STATUS_VALUES)[number];\n\nexport const SUBACCOUNT_STATUS_VALUES = [\"active\", \"disabled\", \"deleted\"] as const;\nexport type SubaccountStatusValue = (typeof SUBACCOUNT_STATUS_VALUES)[number];\n\nexport const ACTIVITY_ENTITY_KIND_VALUES = [\n \"account\",\n \"session\",\n \"api_key\",\n \"subaccount\",\n \"member\",\n \"policy\",\n \"invite\",\n \"security\",\n \"destination\",\n] as const;\nexport type ActivityEntityKindValue = (typeof ACTIVITY_ENTITY_KIND_VALUES)[number];\n\nexport const ACTIVITY_EVENT_ACTION_VALUES = [\n \"created\",\n \"updated\",\n \"deleted\",\n \"enabled\",\n \"disabled\",\n \"removed\",\n \"role_set\",\n \"received\",\n \"replied\",\n \"failed\",\n \"revoked\",\n \"blocked\",\n \"hold_placed\",\n \"hold_released\",\n] as const;\nexport type ActivityEventActionValue = (typeof ACTIVITY_EVENT_ACTION_VALUES)[number];\n\nexport const ACTIVITY_EVENT_SOURCE_VALUES = [\"web\", \"mobile\", \"api\"] as const;\nexport type ActivityEventSourceValue = (typeof ACTIVITY_EVENT_SOURCE_VALUES)[number];\ntype SubaccountStatusProto = Proto.SubaccountUpdateSpec[\"status\"] & Proto.Subaccount[\"status\"];\n\nconst SubaccountStatusProto = {\n ACTIVE: \"active\",\n DISABLED: \"disabled\",\n DELETED: \"deleted\",\n} as const satisfies Record<string, SubaccountStatusProto>;\n\nexport const SubaccountRoleCodec = {\n inputToProto: {\n owner: Proto.SubaccountRole.OWNER,\n admin: Proto.SubaccountRole.ADMIN,\n treasury: Proto.SubaccountRole.TREASURY,\n leveraged_trader: Proto.SubaccountRole.LEVERAGED_TRADER,\n trader: Proto.SubaccountRole.TRADER,\n viewer: Proto.SubaccountRole.VIEWER,\n } satisfies InputToProto<SubaccountRoleValue, Proto.SubaccountRole>,\n protoToOutput: {\n [Proto.SubaccountRole.SUBACCOUNT_ROLE_UNSPECIFIED]: \"unspecified\",\n [Proto.SubaccountRole.OWNER]: \"owner\",\n [Proto.SubaccountRole.ADMIN]: \"admin\",\n [Proto.SubaccountRole.TREASURY]: \"treasury\",\n [Proto.SubaccountRole.LEVERAGED_TRADER]: \"leveraged_trader\",\n [Proto.SubaccountRole.TRADER]: \"trader\",\n [Proto.SubaccountRole.VIEWER]: \"viewer\",\n } satisfies ProtoToOutput<Proto.SubaccountRole, SubaccountRoleValue>,\n} as const;\n\nexport const SubaccountPermissionCodec = {\n protoToOutput: {\n [Proto.SubaccountPermission.UNSPECIFIED]: \"unspecified\",\n [Proto.SubaccountPermission.READ_SUBACCOUNT]: \"read_subaccount\",\n [Proto.SubaccountPermission.UPDATE_SUBACCOUNT]: \"update_subaccount\",\n [Proto.SubaccountPermission.READ_BALANCES]: \"read_balances\",\n [Proto.SubaccountPermission.READ_SPOT]: \"read_spot\",\n [Proto.SubaccountPermission.TRADE_SPOT]: \"trade_spot\",\n [Proto.SubaccountPermission.READ_INTERNAL_TRANSFERS]: \"read_internal_transfers\",\n [Proto.SubaccountPermission.INTERNAL_TRANSFER]: \"internal_transfer\",\n [Proto.SubaccountPermission.EXTERNAL_WITHDRAW]: \"external_withdraw\",\n [Proto.SubaccountPermission.READ_ADDRESS_BOOK]: \"read_address_book\",\n [Proto.SubaccountPermission.MANAGE_ADDRESS_BOOK]: \"manage_address_book\",\n [Proto.SubaccountPermission.READ_MEMBERS]: \"read_members\",\n [Proto.SubaccountPermission.MANAGE_MEMBERS]: \"manage_members\",\n [Proto.SubaccountPermission.READ_INVITES]: \"read_invites\",\n [Proto.SubaccountPermission.MANAGE_INVITES]: \"manage_invites\",\n [Proto.SubaccountPermission.READ_API_KEYS]: \"read_api_keys\",\n [Proto.SubaccountPermission.MANAGE_API_KEYS]: \"manage_api_keys\",\n [Proto.SubaccountPermission.READ_SUBACCOUNT_POLICY]: \"read_subaccount_policy\",\n [Proto.SubaccountPermission.MANAGE_SUBACCOUNT_POLICY]: \"manage_subaccount_policy\",\n [Proto.SubaccountPermission.READ_ACTIVITY]: \"read_activity\",\n [Proto.SubaccountPermission.READ_ACTIVITY_SECURITY_DETAILS]:\n \"read_activity_security_details\",\n [Proto.SubaccountPermission.MANAGE_MEMBER_MFA_REQUIREMENT]: \"manage_member_mfa_requirement\",\n [Proto.SubaccountPermission.CREATE_DEPOSIT_ADDRESS]: \"create_deposit_address\",\n [Proto.SubaccountPermission.READ_DEPOSIT_ADDRESSES]: \"read_deposit_addresses\",\n [Proto.SubaccountPermission.READ_GUARD_SIGNER_STATUS]: \"read_guard_signer_status\",\n [Proto.SubaccountPermission.MANAGE_GUARD_SIGNER]: \"manage_guard_signer\",\n } satisfies ProtoToOutput<Proto.SubaccountPermission, SubaccountPermissionValue>,\n} as const;\n\nexport const InviteActionCodec = {\n inputToProto: {\n accept: Proto.SubaccountInviteAction.ACCEPT,\n decline: Proto.SubaccountInviteAction.DECLINE,\n cancel: Proto.SubaccountInviteAction.CANCEL,\n } satisfies InputToProto<SubaccountInviteActionValue, Proto.SubaccountInviteAction>,\n} as const;\n\nexport const InviteStatusCodec = {\n protoToOutput: {\n [Proto.SubaccountInviteStatus.UNSPECIFIED]: \"unspecified\",\n [Proto.SubaccountInviteStatus.PENDING]: \"pending\",\n [Proto.SubaccountInviteStatus.ACCEPTED]: \"accepted\",\n [Proto.SubaccountInviteStatus.DECLINED]: \"declined\",\n [Proto.SubaccountInviteStatus.CANCELLED]: \"cancelled\",\n } satisfies ProtoToOutput<Proto.SubaccountInviteStatus, SubaccountInviteStatusValue>,\n} as const;\n\nexport const SubaccountStatusCodec = {\n inputToProto: {\n active: SubaccountStatusProto.ACTIVE,\n disabled: SubaccountStatusProto.DISABLED,\n deleted: SubaccountStatusProto.DELETED,\n } satisfies Record<SubaccountStatusValue, SubaccountStatusProto>,\n protoToOutput: {\n [SubaccountStatusProto.ACTIVE]: \"active\",\n [SubaccountStatusProto.DISABLED]: \"disabled\",\n [SubaccountStatusProto.DELETED]: \"deleted\",\n } satisfies Record<SubaccountStatusProto, SubaccountStatusValue>,\n} as const;\n\nexport const ActivityEntityKindCodec = {\n protoToOutput: {\n [Proto.ActivityEntityKind.ACTIVITY_ENTITY_UNSPECIFIED]: \"unspecified\",\n [Proto.ActivityEntityKind.ACTIVITY_ENTITY_ACCOUNT]: \"account\",\n [Proto.ActivityEntityKind.ACTIVITY_ENTITY_SESSION]: \"session\",\n [Proto.ActivityEntityKind.ACTIVITY_ENTITY_API_KEY]: \"api_key\",\n [Proto.ActivityEntityKind.ACTIVITY_ENTITY_SUBACCOUNT]: \"subaccount\",\n [Proto.ActivityEntityKind.ACTIVITY_ENTITY_MEMBER]: \"member\",\n [Proto.ActivityEntityKind.ACTIVITY_ENTITY_POLICY]: \"policy\",\n [Proto.ActivityEntityKind.ACTIVITY_ENTITY_INVITE]: \"invite\",\n [Proto.ActivityEntityKind.ACTIVITY_ENTITY_SECURITY]: \"security\",\n [Proto.ActivityEntityKind.ACTIVITY_ENTITY_DESTINATION]: \"destination\",\n } satisfies ProtoToOutput<Proto.ActivityEntityKind, ActivityEntityKindValue>,\n} as const;\n\nexport const ActivityEventActionCodec = {\n protoToOutput: {\n [Proto.ActivityEventAction.ACTIVITY_ACTION_UNSPECIFIED]: \"unspecified\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_CREATED]: \"created\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_UPDATED]: \"updated\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_DELETED]: \"deleted\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_ENABLED]: \"enabled\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_DISABLED]: \"disabled\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_REMOVED]: \"removed\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_ROLE_SET]: \"role_set\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_RECEIVED]: \"received\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_REPLIED]: \"replied\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_FAILED]: \"failed\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_REVOKED]: \"revoked\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_BLOCKED]: \"blocked\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_HOLD_PLACED]: \"hold_placed\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_HOLD_RELEASED]: \"hold_released\",\n } satisfies ProtoToOutput<Proto.ActivityEventAction, ActivityEventActionValue>,\n} as const;\n\nexport const ActivityEventSourceCodec = {\n protoToOutput: {\n [Proto.ActivityEventSource.ACTIVITY_SOURCE_UNSPECIFIED]: \"unspecified\",\n [Proto.ActivityEventSource.ACTIVITY_SOURCE_WEB]: \"web\",\n [Proto.ActivityEventSource.ACTIVITY_SOURCE_MOBILE]: \"mobile\",\n [Proto.ActivityEventSource.ACTIVITY_SOURCE_API]: \"api\",\n } satisfies ProtoToOutput<Proto.ActivityEventSource, ActivityEventSourceValue>,\n} as const;\n"],"mappings":";;AAqDA,MAAa,2BAA2B;CAAC;CAAU;CAAY;AAAS;AAsCxE,MAAM,wBAAwB;CAC1B,QAAQ;CACR,UAAU;CACV,SAAS;AACb;AAEA,MAAa,sBAAsB;CAC/B,cAAc;EACV,OAAA;EACA,OAAA;EACA,UAAA;EACA,kBAAA;EACA,QAAA;EACA,QAAA;CACJ;CACA,eAAe;GACyC,IAAA;GACtB,IAAA;GACA,IAAA;GACG,IAAA;GACQ,IAAA;GACV,IAAA;GACA,IAAA;CACnC;AACJ;AAEA,MAAa,4BAA4B,EACrC,eAAe;EAC+B,IAAA;EACI,IAAA;EACE,IAAA;EACJ,IAAA;EACJ,IAAA;EACC,IAAA;EACa,IAAA;EACN,IAAA;EACA,IAAA;EACA,IAAA;EACE,KAAA;EACP,KAAA;EACE,KAAA;EACF,KAAA;EACE,KAAA;EACD,KAAA;EACE,KAAA;EACO,KAAA;EACE,KAAA;EACX,KAAA;EAExC,KAAA;EACwD,KAAA;EACP,KAAA;EACA,KAAA;EACE,KAAA;EACL,KAAA;AACtD,EACJ;AAEA,MAAa,oBAAoB,EAC7B,cAAc;CACV,QAAA;CACA,SAAA;CACA,QAAA;AACJ,EACJ;AAEA,MAAa,oBAAoB,EAC7B,eAAe;EACiC,IAAA;EACJ,IAAA;EACC,IAAA;EACA,IAAA;EACC,IAAA;AAC9C,EACJ;AAEA,MAAa,wBAAwB;CACjC,cAAc;EACV,QAAQ,sBAAsB;EAC9B,UAAU,sBAAsB;EAChC,SAAS,sBAAsB;CACnC;CACA,eAAe;GACV,sBAAsB,SAAS;GAC/B,sBAAsB,WAAW;GACjC,sBAAsB,UAAU;CACrC;AACJ;AAEA,MAAa,0BAA0B,EACnC,eAAe;EAC6C,IAAA;EACJ,IAAA;EACA,IAAA;EACA,IAAA;EACG,IAAA;EACJ,IAAA;EACA,IAAA;EACA,IAAA;EACE,IAAA;EACG,IAAA;AAC5D,EACJ;AAEA,MAAa,2BAA2B,EACpC,eAAe;EAC8C,IAAA;EACJ,IAAA;EACA,IAAA;EACA,IAAA;EACA,IAAA;EACC,IAAA;EACD,IAAA;EACC,IAAA;EACA,IAAA;EACD,IAAA;EACD,KAAA;EACC,KAAA;EACA,KAAA;EACI,KAAA;EACE,KAAA;AAC/D,EACJ;AAEA,MAAa,2BAA2B,EACpC,eAAe;EAC8C,IAAA;EACR,IAAA;EACG,IAAA;EACH,IAAA;AACrD,EACJ"}
|
|
1
|
+
{"version":3,"file":"subaccounts.codecs.js","names":[],"sources":["../../../src/services/subaccounts/subaccounts.codecs.ts"],"sourcesContent":["import * as Proto from \"../../gen/auth/v1/subaccounts_pb.js\";\nimport type { InputToProto, ProtoToOutput } from \"../../utils/types.js\";\n\nexport const SUBACCOUNT_ROLE_VALUES = [\n \"owner\",\n \"admin\",\n \"treasury\",\n \"leveraged_trader\",\n \"trader\",\n \"viewer\",\n] as const;\nexport type SubaccountRoleValue = (typeof SUBACCOUNT_ROLE_VALUES)[number];\n\nexport const SUBACCOUNT_PERMISSION_VALUES = [\n \"read_subaccount\",\n \"update_subaccount\",\n \"read_balances\",\n \"read_spot\",\n \"trade_spot\",\n \"read_internal_transfers\",\n \"internal_transfer\",\n \"external_withdraw\",\n \"read_address_book\",\n \"manage_address_book\",\n \"read_members\",\n \"manage_members\",\n \"read_invites\",\n \"manage_invites\",\n \"read_api_keys\",\n \"manage_api_keys\",\n \"read_subaccount_policy\",\n \"manage_subaccount_policy\",\n \"read_activity\",\n \"read_activity_security_details\",\n \"manage_member_mfa_requirement\",\n \"create_deposit_address\",\n \"read_deposit_addresses\",\n \"read_guard_signer_status\",\n \"manage_guard_signer\",\n] as const;\nexport type SubaccountPermissionValue = (typeof SUBACCOUNT_PERMISSION_VALUES)[number];\n\nexport const SUBACCOUNT_INVITE_ACTION_VALUES = [\"accept\", \"decline\", \"cancel\"] as const;\nexport type SubaccountInviteActionValue = (typeof SUBACCOUNT_INVITE_ACTION_VALUES)[number];\n\nexport const SUBACCOUNT_INVITE_STATUS_VALUES = [\n \"pending\",\n \"accepted\",\n \"declined\",\n \"cancelled\",\n] as const;\nexport type SubaccountInviteStatusValue = (typeof SUBACCOUNT_INVITE_STATUS_VALUES)[number];\n\nexport const SUBACCOUNT_STATUS_VALUES = [\"active\", \"disabled\"] as const;\nexport type SubaccountStatusValue = (typeof SUBACCOUNT_STATUS_VALUES)[number];\n\nexport const ACTIVITY_ENTITY_KIND_VALUES = [\n \"account\",\n \"session\",\n \"api_key\",\n \"subaccount\",\n \"member\",\n \"policy\",\n \"invite\",\n \"security\",\n \"destination\",\n] as const;\nexport type ActivityEntityKindValue = (typeof ACTIVITY_ENTITY_KIND_VALUES)[number];\n\nexport const ACTIVITY_EVENT_ACTION_VALUES = [\n \"created\",\n \"updated\",\n \"deleted\",\n \"enabled\",\n \"disabled\",\n \"removed\",\n \"role_set\",\n \"received\",\n \"replied\",\n \"failed\",\n \"revoked\",\n \"blocked\",\n \"hold_placed\",\n \"hold_released\",\n] as const;\nexport type ActivityEventActionValue = (typeof ACTIVITY_EVENT_ACTION_VALUES)[number];\n\nexport const ACTIVITY_EVENT_SOURCE_VALUES = [\"web\", \"mobile\", \"api\"] as const;\nexport type ActivityEventSourceValue = (typeof ACTIVITY_EVENT_SOURCE_VALUES)[number];\ntype SubaccountStatusProto = Proto.SubaccountUpdateSpec[\"status\"] & Proto.Subaccount[\"status\"];\n\nconst SubaccountStatusProto = {\n ACTIVE: \"active\",\n DISABLED: \"disabled\",\n} as const satisfies Record<string, SubaccountStatusProto>;\n\nexport const SubaccountRoleCodec = {\n inputToProto: {\n owner: Proto.SubaccountRole.OWNER,\n admin: Proto.SubaccountRole.ADMIN,\n treasury: Proto.SubaccountRole.TREASURY,\n leveraged_trader: Proto.SubaccountRole.LEVERAGED_TRADER,\n trader: Proto.SubaccountRole.TRADER,\n viewer: Proto.SubaccountRole.VIEWER,\n } satisfies InputToProto<SubaccountRoleValue, Proto.SubaccountRole>,\n protoToOutput: {\n [Proto.SubaccountRole.SUBACCOUNT_ROLE_UNSPECIFIED]: \"unspecified\",\n [Proto.SubaccountRole.OWNER]: \"owner\",\n [Proto.SubaccountRole.ADMIN]: \"admin\",\n [Proto.SubaccountRole.TREASURY]: \"treasury\",\n [Proto.SubaccountRole.LEVERAGED_TRADER]: \"leveraged_trader\",\n [Proto.SubaccountRole.TRADER]: \"trader\",\n [Proto.SubaccountRole.VIEWER]: \"viewer\",\n } satisfies ProtoToOutput<Proto.SubaccountRole, SubaccountRoleValue>,\n} as const;\n\nexport const SubaccountPermissionCodec = {\n protoToOutput: {\n [Proto.SubaccountPermission.UNSPECIFIED]: \"unspecified\",\n [Proto.SubaccountPermission.READ_SUBACCOUNT]: \"read_subaccount\",\n [Proto.SubaccountPermission.UPDATE_SUBACCOUNT]: \"update_subaccount\",\n [Proto.SubaccountPermission.READ_BALANCES]: \"read_balances\",\n [Proto.SubaccountPermission.READ_SPOT]: \"read_spot\",\n [Proto.SubaccountPermission.TRADE_SPOT]: \"trade_spot\",\n [Proto.SubaccountPermission.READ_INTERNAL_TRANSFERS]: \"read_internal_transfers\",\n [Proto.SubaccountPermission.INTERNAL_TRANSFER]: \"internal_transfer\",\n [Proto.SubaccountPermission.EXTERNAL_WITHDRAW]: \"external_withdraw\",\n [Proto.SubaccountPermission.READ_ADDRESS_BOOK]: \"read_address_book\",\n [Proto.SubaccountPermission.MANAGE_ADDRESS_BOOK]: \"manage_address_book\",\n [Proto.SubaccountPermission.READ_MEMBERS]: \"read_members\",\n [Proto.SubaccountPermission.MANAGE_MEMBERS]: \"manage_members\",\n [Proto.SubaccountPermission.READ_INVITES]: \"read_invites\",\n [Proto.SubaccountPermission.MANAGE_INVITES]: \"manage_invites\",\n [Proto.SubaccountPermission.READ_API_KEYS]: \"read_api_keys\",\n [Proto.SubaccountPermission.MANAGE_API_KEYS]: \"manage_api_keys\",\n [Proto.SubaccountPermission.READ_SUBACCOUNT_POLICY]: \"read_subaccount_policy\",\n [Proto.SubaccountPermission.MANAGE_SUBACCOUNT_POLICY]: \"manage_subaccount_policy\",\n [Proto.SubaccountPermission.READ_ACTIVITY]: \"read_activity\",\n [Proto.SubaccountPermission.READ_ACTIVITY_SECURITY_DETAILS]:\n \"read_activity_security_details\",\n [Proto.SubaccountPermission.MANAGE_MEMBER_MFA_REQUIREMENT]: \"manage_member_mfa_requirement\",\n [Proto.SubaccountPermission.CREATE_DEPOSIT_ADDRESS]: \"create_deposit_address\",\n [Proto.SubaccountPermission.READ_DEPOSIT_ADDRESSES]: \"read_deposit_addresses\",\n [Proto.SubaccountPermission.READ_GUARD_SIGNER_STATUS]: \"read_guard_signer_status\",\n [Proto.SubaccountPermission.MANAGE_GUARD_SIGNER]: \"manage_guard_signer\",\n } satisfies ProtoToOutput<Proto.SubaccountPermission, SubaccountPermissionValue>,\n} as const;\n\nexport const InviteActionCodec = {\n inputToProto: {\n accept: Proto.SubaccountInviteAction.ACCEPT,\n decline: Proto.SubaccountInviteAction.DECLINE,\n cancel: Proto.SubaccountInviteAction.CANCEL,\n } satisfies InputToProto<SubaccountInviteActionValue, Proto.SubaccountInviteAction>,\n} as const;\n\nexport const InviteStatusCodec = {\n protoToOutput: {\n [Proto.SubaccountInviteStatus.UNSPECIFIED]: \"unspecified\",\n [Proto.SubaccountInviteStatus.PENDING]: \"pending\",\n [Proto.SubaccountInviteStatus.ACCEPTED]: \"accepted\",\n [Proto.SubaccountInviteStatus.DECLINED]: \"declined\",\n [Proto.SubaccountInviteStatus.CANCELLED]: \"cancelled\",\n } satisfies ProtoToOutput<Proto.SubaccountInviteStatus, SubaccountInviteStatusValue>,\n} as const;\n\nexport const SubaccountStatusCodec = {\n inputToProto: {\n active: SubaccountStatusProto.ACTIVE,\n disabled: SubaccountStatusProto.DISABLED,\n } satisfies Record<SubaccountStatusValue, SubaccountStatusProto>,\n protoToOutput: {\n [SubaccountStatusProto.ACTIVE]: \"active\",\n [SubaccountStatusProto.DISABLED]: \"disabled\",\n } satisfies Record<SubaccountStatusProto, SubaccountStatusValue>,\n} as const;\n\nexport const ActivityEntityKindCodec = {\n protoToOutput: {\n [Proto.ActivityEntityKind.ACTIVITY_ENTITY_UNSPECIFIED]: \"unspecified\",\n [Proto.ActivityEntityKind.ACTIVITY_ENTITY_ACCOUNT]: \"account\",\n [Proto.ActivityEntityKind.ACTIVITY_ENTITY_SESSION]: \"session\",\n [Proto.ActivityEntityKind.ACTIVITY_ENTITY_API_KEY]: \"api_key\",\n [Proto.ActivityEntityKind.ACTIVITY_ENTITY_SUBACCOUNT]: \"subaccount\",\n [Proto.ActivityEntityKind.ACTIVITY_ENTITY_MEMBER]: \"member\",\n [Proto.ActivityEntityKind.ACTIVITY_ENTITY_POLICY]: \"policy\",\n [Proto.ActivityEntityKind.ACTIVITY_ENTITY_INVITE]: \"invite\",\n [Proto.ActivityEntityKind.ACTIVITY_ENTITY_SECURITY]: \"security\",\n [Proto.ActivityEntityKind.ACTIVITY_ENTITY_DESTINATION]: \"destination\",\n } satisfies ProtoToOutput<Proto.ActivityEntityKind, ActivityEntityKindValue>,\n} as const;\n\nexport const ActivityEventActionCodec = {\n protoToOutput: {\n [Proto.ActivityEventAction.ACTIVITY_ACTION_UNSPECIFIED]: \"unspecified\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_CREATED]: \"created\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_UPDATED]: \"updated\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_DELETED]: \"deleted\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_ENABLED]: \"enabled\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_DISABLED]: \"disabled\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_REMOVED]: \"removed\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_ROLE_SET]: \"role_set\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_RECEIVED]: \"received\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_REPLIED]: \"replied\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_FAILED]: \"failed\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_REVOKED]: \"revoked\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_BLOCKED]: \"blocked\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_HOLD_PLACED]: \"hold_placed\",\n [Proto.ActivityEventAction.ACTIVITY_ACTION_HOLD_RELEASED]: \"hold_released\",\n } satisfies ProtoToOutput<Proto.ActivityEventAction, ActivityEventActionValue>,\n} as const;\n\nexport const ActivityEventSourceCodec = {\n protoToOutput: {\n [Proto.ActivityEventSource.ACTIVITY_SOURCE_UNSPECIFIED]: \"unspecified\",\n [Proto.ActivityEventSource.ACTIVITY_SOURCE_WEB]: \"web\",\n [Proto.ActivityEventSource.ACTIVITY_SOURCE_MOBILE]: \"mobile\",\n [Proto.ActivityEventSource.ACTIVITY_SOURCE_API]: \"api\",\n } satisfies ProtoToOutput<Proto.ActivityEventSource, ActivityEventSourceValue>,\n} as const;\n"],"mappings":";;AAqDA,MAAa,2BAA2B,CAAC,UAAU,UAAU;AAsC7D,MAAM,wBAAwB;CAC1B,QAAQ;CACR,UAAU;AACd;AAEA,MAAa,sBAAsB;CAC/B,cAAc;EACV,OAAA;EACA,OAAA;EACA,UAAA;EACA,kBAAA;EACA,QAAA;EACA,QAAA;CACJ;CACA,eAAe;GACyC,IAAA;GACtB,IAAA;GACA,IAAA;GACG,IAAA;GACQ,IAAA;GACV,IAAA;GACA,IAAA;CACnC;AACJ;AAEA,MAAa,4BAA4B,EACrC,eAAe;EAC+B,IAAA;EACI,IAAA;EACE,IAAA;EACJ,IAAA;EACJ,IAAA;EACC,IAAA;EACa,IAAA;EACN,IAAA;EACA,IAAA;EACA,IAAA;EACE,KAAA;EACP,KAAA;EACE,KAAA;EACF,KAAA;EACE,KAAA;EACD,KAAA;EACE,KAAA;EACO,KAAA;EACE,KAAA;EACX,KAAA;EAExC,KAAA;EACwD,KAAA;EACP,KAAA;EACA,KAAA;EACE,KAAA;EACL,KAAA;AACtD,EACJ;AAEA,MAAa,oBAAoB,EAC7B,cAAc;CACV,QAAA;CACA,SAAA;CACA,QAAA;AACJ,EACJ;AAEA,MAAa,oBAAoB,EAC7B,eAAe;EACiC,IAAA;EACJ,IAAA;EACC,IAAA;EACA,IAAA;EACC,IAAA;AAC9C,EACJ;AAEA,MAAa,wBAAwB;CACjC,cAAc;EACV,QAAQ,sBAAsB;EAC9B,UAAU,sBAAsB;CACpC;CACA,eAAe;GACV,sBAAsB,SAAS;GAC/B,sBAAsB,WAAW;CACtC;AACJ;AAEA,MAAa,0BAA0B,EACnC,eAAe;EAC6C,IAAA;EACJ,IAAA;EACA,IAAA;EACA,IAAA;EACG,IAAA;EACJ,IAAA;EACA,IAAA;EACA,IAAA;EACE,IAAA;EACG,IAAA;AAC5D,EACJ;AAEA,MAAa,2BAA2B,EACpC,eAAe;EAC8C,IAAA;EACJ,IAAA;EACA,IAAA;EACA,IAAA;EACA,IAAA;EACC,IAAA;EACD,IAAA;EACC,IAAA;EACA,IAAA;EACD,IAAA;EACD,KAAA;EACC,KAAA;EACA,KAAA;EACI,KAAA;EACE,KAAA;AAC/D,EACJ;AAEA,MAAa,2BAA2B,EACpC,eAAe;EAC8C,IAAA;EACR,IAAA;EACG,IAAA;EACH,IAAA;AACrD,EACJ"}
|
|
@@ -9,7 +9,7 @@ import "../api-keys/index.js";
|
|
|
9
9
|
import { SubaccountPolicy } from "../policies/subaccount-policies/subaccount-policies.schemas.js";
|
|
10
10
|
import { SubaccountPoliciesService } from "../policies/subaccount-policies/subaccount-policies.js";
|
|
11
11
|
import "../policies/subaccount-policies/index.js";
|
|
12
|
-
import { CreateSubaccountInputSchema, CreateSubaccountResult,
|
|
12
|
+
import { CreateSubaccountInputSchema, CreateSubaccountResult, EffectiveSubaccountPermissions, InviteSubaccountMemberInputSchema, ListSubaccountInvitesInputSchema, RemoveSubaccountMemberInputSchema, RespondSubaccountInviteInputSchema, SetSubaccountMemberMfaRequirementInputSchema, Subaccount, SubaccountActivityInputSchema, SubaccountEvent, SubaccountIdInputSchema, SubaccountInvite, SubaccountMember, SubaccountMutationResult, SubaccountRoleCatalog, SubaccountSchema, UpdateSubaccountInputSchema, UpdateSubaccountMemberRoleInputSchema } from "./subaccounts.schemas.js";
|
|
13
13
|
import * as v from "valibot";
|
|
14
14
|
//#region src/services/subaccounts/subaccounts.d.ts
|
|
15
15
|
interface SubscribeSubaccountsInput extends BaseSubscribeInput<Subaccount> {
|
|
@@ -46,7 +46,7 @@ declare class SubaccountsService {
|
|
|
46
46
|
*/
|
|
47
47
|
create(input: v.InferInput<typeof CreateSubaccountInputSchema>, options?: PolyesterMutationOptions): Promise<CreateSubaccountResult>;
|
|
48
48
|
/**
|
|
49
|
-
* Updates mutable subaccount display/status fields such as label and active/disabled
|
|
49
|
+
* Updates mutable subaccount display/status fields such as label and active/disabled status.
|
|
50
50
|
*/
|
|
51
51
|
update(input: v.InferInput<typeof UpdateSubaccountInputSchema>, options?: PolyesterMutationOptions): Promise<Subaccount>;
|
|
52
52
|
/**
|
|
@@ -85,10 +85,6 @@ declare class SubaccountsService {
|
|
|
85
85
|
* Accepts or rejects an incoming invite, or cancels an outgoing invite, returning the updated invitation.
|
|
86
86
|
*/
|
|
87
87
|
respondInvite(input: v.InferInput<typeof RespondSubaccountInviteInputSchema>, options?: PolyesterMutationOptions): Promise<SubaccountInvite>;
|
|
88
|
-
/**
|
|
89
|
-
* Soft-deletes a subaccount by updating its status to deleted.
|
|
90
|
-
*/
|
|
91
|
-
delete(input: v.InferInput<typeof DeleteSubaccountInputSchema>, options?: PolyesterMutationOptions): Promise<Subaccount>;
|
|
92
88
|
/**
|
|
93
89
|
* Returns paginated audit/activity events for a subaccount, newest first, with a non-negative integer limit from 0 through 200 and opaque cursor pagination.
|
|
94
90
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subaccounts.d.ts","names":[],"sources":["../../../src/services/subaccounts/subaccounts.ts"],"mappings":";;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"subaccounts.d.ts","names":[],"sources":["../../../src/services/subaccounts/subaccounts.ts"],"mappings":";;;;;;;;;;;;;;UAmDU,kCAAkC,mBAAmB;EAC3D;;UAGM,8BAA8B,mBAAmB;EACvD;;;;;cAMS;;WACA,UAAU;EASf,YAAA,YAAY,4BACZ,UAAU,mBACV,WAAW;;;;EAaT,KAAK,UAAU,0BAA0B;IAC3C;IACA,aAAa,EAAE,mBAAmB;;;;;EAYhC,IACF,OAAO,EAAE,kBAAkB,0BAC3B,UAAU,0BACX,QACC;IACI,SAAS;IACT,QAAQ;IACR,SAAS;IACT,SAAS;;;;;EAmCX,OACF,OAAO,EAAE,kBAAkB,8BAC3B,UAAU,2BACX,QAAQ;;;;EAYL,OACF,OAAO,EAAE,kBAAkB,8BAC3B,UAAU,2BACX,QAAQ;;;;EAaL,aACF,OAAO,EAAE,kBAAkB,oCAC3B,UAAU,2BACX,QAAQ;;;;EAYL,aACF,OAAO,EAAE,kBAAkB,oCAC3B,UAAU,2BACX,QAAQ;;;;EAYL,iBACF,OAAO,EAAE,kBAAkB,wCAC3B,UAAU,2BACX,QAAQ;;;;EAYL,wBACF,OAAO,EAAE,kBAAkB,+CAC3B,UAAU,2BACX,QAAQ;;;;EAYL,YACF,OAAO,EAAE,kBAAkB,mCAC3B,UAAU,0BACX,QAAQ;;;;EAYL,UAAU,UAAU,0BAA0B,QAAQ;;;;EAWtD,wBACF,OAAO,EAAE,kBAAkB,0BAC3B,UAAU,0BACX,QAAQ;;;;EAYL,YACF,OAAO,EAAE,kBAAkB,0BAC3B,UAAU,0BACX,QAAQ;;;;EAYL,cACF,OAAO,EAAE,kBAAkB,qCAC3B,UAAU,2BACX,QAAQ;;;;EAYL,WACF,OAAO,EAAE,kBAAkB,gCAC3B,UAAU,0BACX;IAAU,QAAQ;IAAmB;;;;;EAexC,UAAU,OAAO;;;;EAmBjB,iBAAiB,OAAO"}
|
|
@@ -6,7 +6,7 @@ import { ApiKeySchema as ApiKeySchema$1 } from "../api-keys/api-keys.schemas.js"
|
|
|
6
6
|
import { SubaccountRoleService, SubaccountSchema, SubaccountService, SubaccountViewService } from "../../gen/auth/v1/subaccounts_pb.js";
|
|
7
7
|
import { DEFAULT_SUBACCOUNT_POLICY, SubaccountPolicySchema } from "../policies/subaccount-policies/subaccount-policies.schemas.js";
|
|
8
8
|
import { SubaccountPoliciesService } from "../policies/subaccount-policies/subaccount-policies.js";
|
|
9
|
-
import { CreateSubaccountInputSchema, CreateSubaccountResultSchema,
|
|
9
|
+
import { CreateSubaccountInputSchema, CreateSubaccountResultSchema, EffectiveSubaccountPermissionsSchema, InviteSubaccountMemberInputSchema, ListSubaccountInvitesInputSchema, RemoveSubaccountMemberInputSchema, RespondSubaccountInviteInputSchema, SetSubaccountMemberMfaRequirementInputSchema, SubaccountActivityEventSchema, SubaccountActivityInputSchema, SubaccountIdInputSchema, SubaccountInviteSchema, SubaccountMemberSchema, SubaccountMutationResultSchema, SubaccountRoleCatalogSchema, SubaccountSchema as SubaccountSchema$1, UpdateSubaccountInputSchema, UpdateSubaccountMemberRoleInputSchema } from "./subaccounts.schemas.js";
|
|
10
10
|
import { createClient } from "@connectrpc/connect";
|
|
11
11
|
import * as v from "valibot";
|
|
12
12
|
//#region src/services/subaccounts/subaccounts.ts
|
|
@@ -71,7 +71,7 @@ var SubaccountsService = class {
|
|
|
71
71
|
return parse(CreateSubaccountResultSchema, res);
|
|
72
72
|
}
|
|
73
73
|
/**
|
|
74
|
-
* Updates mutable subaccount display/status fields such as label and active/disabled
|
|
74
|
+
* Updates mutable subaccount display/status fields such as label and active/disabled status.
|
|
75
75
|
*/
|
|
76
76
|
async update(input, options) {
|
|
77
77
|
const validatedInput = parse(UpdateSubaccountInputSchema, input);
|
|
@@ -151,20 +151,6 @@ var SubaccountsService = class {
|
|
|
151
151
|
return parse(SubaccountInviteSchema, res.invite);
|
|
152
152
|
}
|
|
153
153
|
/**
|
|
154
|
-
* Soft-deletes a subaccount by updating its status to deleted.
|
|
155
|
-
*/
|
|
156
|
-
async delete(input, options) {
|
|
157
|
-
const validatedInput = parse(DeleteSubaccountInputSchema, input);
|
|
158
|
-
const res = await this.#client.updateSubaccount({
|
|
159
|
-
subaccountId: validatedInput.subaccountId,
|
|
160
|
-
subaccount: { status: "deleted" },
|
|
161
|
-
updateMask: { paths: ["status"] },
|
|
162
|
-
expectedRevision: validatedInput.expectedRevision
|
|
163
|
-
}, toConnectCallOptions(options));
|
|
164
|
-
if (!res.subaccount) throw new Error("Failed to delete subaccount");
|
|
165
|
-
return parse(SubaccountSchema$1, res.subaccount);
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
154
|
* Returns paginated audit/activity events for a subaccount, newest first, with a non-negative integer limit from 0 through 200 and opaque cursor pagination.
|
|
169
155
|
*/
|
|
170
156
|
async listEvents(input, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subaccounts.js","names":["#client","Proto.SubaccountService","#viewClient","Proto.SubaccountViewService","#publicRoleClient","Proto.SubaccountRoleService","#authRoleClient","#realtime","SubaccountSchema","ApiKeySchema","Proto.SubaccountSchema","ProtoApiKeys.ApiKeySchema"],"sources":["../../../src/services/subaccounts/subaccounts.ts"],"sourcesContent":["import * as Proto from \"../../gen/auth/v1/subaccounts_pb.js\";\nimport * as ProtoApiKeys from \"../../gen/auth/v1/api_keys_pb.js\";\nimport { createClient, type Client } from \"@connectrpc/connect\";\nimport * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport { type ApiKey, ApiKeySchema } from \"../api-keys/index.js\";\nimport { formatId } from \"../../utils/base58-id.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport type { PolyesterRealtime } from \"../../realtime/index.js\";\nimport {\n DEFAULT_SUBACCOUNT_POLICY,\n SubaccountPoliciesService,\n type SubaccountPolicy,\n SubaccountPolicySchema,\n} from \"../policies/subaccount-policies/index.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport type { AuthAndPublicApiTransports } from \"../../shared/transports.js\";\nimport type { SubaccountResolver } from \"../subaccount-resolver.js\";\nimport {\n CreateSubaccountInputSchema,\n CreateSubaccountResultSchema,\n UpdateSubaccountInputSchema,\n InviteSubaccountMemberInputSchema,\n RemoveSubaccountMemberInputSchema,\n UpdateSubaccountMemberRoleInputSchema,\n ListSubaccountInvitesInputSchema,\n RespondSubaccountInviteInputSchema,\n SubaccountActivityInputSchema,\n SubaccountSchema,\n SubaccountMemberSchema,\n SubaccountInviteSchema,\n SubaccountActivityEventSchema,\n SetSubaccountMemberMfaRequirementInputSchema,\n SubaccountIdInputSchema,\n DeleteSubaccountInputSchema,\n SubaccountMutationResultSchema,\n SubaccountRoleCatalogSchema,\n EffectiveSubaccountPermissionsSchema,\n type CreateSubaccountResult,\n type Subaccount,\n type SubaccountMember,\n type SubaccountInvite,\n type SubaccountEvent,\n type SubaccountMutationResult,\n type SubaccountRoleCatalog,\n type EffectiveSubaccountPermissions,\n} from \"./subaccounts.schemas.js\";\n\ninterface SubscribeSubaccountsInput extends BaseSubscribeInput<Subaccount> {\n accountId: string;\n}\n\ninterface SubscribeApiKeysInput extends BaseSubscribeInput<ApiKey> {\n accountId: string;\n}\n\n/**\n * Reads the public role catalog and creates, manages, shares, audits, and subscribes to subaccounts visible to the authenticated caller.\n */\nexport class SubaccountsService {\n readonly policies: SubaccountPoliciesService;\n\n #client: Client<typeof Proto.SubaccountService>;\n #viewClient: Client<typeof Proto.SubaccountViewService>;\n #publicRoleClient: Client<typeof Proto.SubaccountRoleService>;\n #authRoleClient: Client<typeof Proto.SubaccountRoleService>;\n #realtime: PolyesterRealtime;\n\n constructor(\n transports: AuthAndPublicApiTransports,\n realtime: PolyesterRealtime,\n resolver?: SubaccountResolver,\n ) {\n this.policies = new SubaccountPoliciesService(transports, realtime, resolver);\n this.#client = createClient(Proto.SubaccountService, transports.authApi);\n this.#viewClient = createClient(Proto.SubaccountViewService, transports.authApi);\n this.#publicRoleClient = createClient(Proto.SubaccountRoleService, transports.publicApi);\n this.#authRoleClient = createClient(Proto.SubaccountRoleService, transports.authApi);\n this.#realtime = realtime;\n }\n\n /**\n * Returns subaccounts owned by or shared with the caller plus totalCreated, including soft-deleted count metadata useful for deriving future smart-account salts.\n */\n async list(options?: PolyesterRequestOptions): Promise<{\n totalCreated: number;\n subaccounts: v.InferOutput<typeof SubaccountSchema>[];\n }> {\n const res = await this.#client.listSubaccounts({}, toConnectCallOptions(options));\n return {\n totalCreated: res.totalCreated,\n subaccounts: parse(v.array(SubaccountSchema), res.subaccounts),\n };\n }\n\n /**\n * Fetches an aggregated subaccount dashboard view with subaccount details, policy, API keys, balances, members, and outgoing invites; throws if the subaccount is missing.\n */\n async get(\n input: v.InferInput<typeof SubaccountIdInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<\n Subaccount & {\n apiKeys: ApiKey[];\n policy: SubaccountPolicy;\n members: SubaccountMember[];\n invites: SubaccountInvite[];\n }\n > {\n const validatedInput = parse(SubaccountIdInputSchema, input);\n const subaccountId = formatId(validatedInput.subaccountId);\n const res = await this.#viewClient.getSubaccount(\n {\n subaccountId: validatedInput.subaccountId,\n includeApiKeys: true,\n includeBalances: true,\n includeMembers: true,\n includeInvites: true,\n includePolicy: true,\n invitesDirection: \"outgoing\",\n },\n toConnectCallOptions(options),\n );\n if (!res.subaccount) throw new Error(`Subaccount not found: ${subaccountId}`);\n\n return {\n ...parse(SubaccountSchema, res.subaccount),\n policy: res.policy\n ? parse(SubaccountPolicySchema, res.policy)\n : DEFAULT_SUBACCOUNT_POLICY,\n apiKeys: parse(v.optional(v.array(ApiKeySchema), []), res.apiKeys),\n members: parse(v.optional(v.array(SubaccountMemberSchema), []), res.members),\n invites: v\n .parse(v.optional(v.array(SubaccountInviteSchema), []), res.invites)\n .filter((invite) => invite.subaccountId === subaccountId),\n };\n }\n\n /**\n * Creates a new subaccount under the caller's root account using a smart-account address, nonce, and signature proof.\n */\n async create(\n input: v.InferInput<typeof CreateSubaccountInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<CreateSubaccountResult> {\n const validatedInput = parse(CreateSubaccountInputSchema, input);\n const res = await this.#client.createSubaccount(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(CreateSubaccountResultSchema, res);\n }\n\n /**\n * Updates mutable subaccount display/status fields such as label and active/disabled/deleted status.\n */\n async update(\n input: v.InferInput<typeof UpdateSubaccountInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<Subaccount> {\n const validatedInput = parse(UpdateSubaccountInputSchema, input);\n const res = await this.#client.updateSubaccount(\n validatedInput,\n toConnectCallOptions(options),\n );\n if (!res.subaccount) throw new Error(\"Failed to update subaccount\");\n return parse(SubaccountSchema, res.subaccount);\n }\n\n /**\n * Creates or refreshes a pending invitation granting a role on a subaccount to another root account.\n */\n async inviteMember(\n input: v.InferInput<typeof InviteSubaccountMemberInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountInvite> {\n const validatedInput = parse(InviteSubaccountMemberInputSchema, input);\n const res = await this.#client.inviteSubaccountMember(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(SubaccountInviteSchema, res.invite);\n }\n\n /**\n * Removes delegated access for a subaccount member by grantee account ID.\n */\n async removeMember(\n input: v.InferInput<typeof RemoveSubaccountMemberInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountMutationResult> {\n const validatedInput = parse(RemoveSubaccountMemberInputSchema, input);\n const res = await this.#client.removeSubaccountMember(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(SubaccountMutationResultSchema, res);\n }\n\n /**\n * Changes an existing delegated member's role without sending a new invitation.\n */\n async updateMemberRole(\n input: v.InferInput<typeof UpdateSubaccountMemberRoleInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountMutationResult> {\n const validatedInput = parse(UpdateSubaccountMemberRoleInputSchema, input);\n const res = await this.#client.updateSubaccountMemberRole(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(SubaccountMutationResultSchema, res);\n }\n\n /**\n * Enables or disables the owner-controlled MFA requirement for delegated interactive member actions on a subaccount.\n */\n async setMemberMfaRequirement(\n input: v.InferInput<typeof SetSubaccountMemberMfaRequirementInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountMutationResult> {\n const validatedInput = parse(SetSubaccountMemberMfaRequirementInputSchema, input);\n const res = await this.#client.setSubaccountMemberMFARequirement(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(SubaccountMutationResultSchema, res);\n }\n\n /**\n * Returns incoming, outgoing, or all subaccount invitations for the caller, newest first.\n */\n async listInvites(\n input: v.InferInput<typeof ListSubaccountInvitesInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<SubaccountInvite[]> {\n const validatedInput = parse(ListSubaccountInvitesInputSchema, input);\n const res = await this.#client.listSubaccountInvites(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(v.array(SubaccountInviteSchema), res.invites);\n }\n\n /**\n * Returns the public built-in role and permission catalog with display metadata and per-role permission sets.\n */\n async listRoles(options?: PolyesterRequestOptions): Promise<SubaccountRoleCatalog> {\n const res = await this.#publicRoleClient.listSubaccountRoles(\n {},\n toConnectCallOptions(options),\n );\n return parse(SubaccountRoleCatalogSchema, res);\n }\n\n /**\n * Returns the caller's current role, effective role-granted permissions, and attached policy ID for a subaccount.\n */\n async getEffectivePermissions(\n input: v.InferInput<typeof SubaccountIdInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<EffectiveSubaccountPermissions> {\n const validatedInput = parse(SubaccountIdInputSchema, input);\n const res = await this.#authRoleClient.getEffectiveSubaccountPermissions(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(EffectiveSubaccountPermissionsSchema, res);\n }\n\n /**\n * Returns the owner and delegated members for a subaccount, including role and MFA enrollment status.\n */\n async listMembers(\n input: v.InferInput<typeof SubaccountIdInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<SubaccountMember[]> {\n const validatedInput = parse(SubaccountIdInputSchema, input);\n const res = await this.#client.listSubaccountMembers(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(v.array(SubaccountMemberSchema), res.members);\n }\n\n /**\n * Accepts or rejects an incoming invite, or cancels an outgoing invite, returning the updated invitation.\n */\n async respondInvite(\n input: v.InferInput<typeof RespondSubaccountInviteInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountInvite> {\n const validatedInput = parse(RespondSubaccountInviteInputSchema, input);\n const res = await this.#client.respondSubaccountInvite(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(SubaccountInviteSchema, res.invite);\n }\n\n /**\n * Soft-deletes a subaccount by updating its status to deleted.\n */\n async delete(\n input: v.InferInput<typeof DeleteSubaccountInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<Subaccount> {\n const validatedInput = parse(DeleteSubaccountInputSchema, input);\n const res = await this.#client.updateSubaccount(\n {\n subaccountId: validatedInput.subaccountId,\n subaccount: { status: \"deleted\" },\n updateMask: { paths: [\"status\"] },\n expectedRevision: validatedInput.expectedRevision,\n },\n toConnectCallOptions(options),\n );\n if (!res.subaccount) throw new Error(\"Failed to delete subaccount\");\n return parse(SubaccountSchema, res.subaccount);\n }\n\n /**\n * Returns paginated audit/activity events for a subaccount, newest first, with a non-negative integer limit from 0 through 200 and opaque cursor pagination.\n */\n async listEvents(\n input: v.InferInput<typeof SubaccountActivityInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<{ events: SubaccountEvent[]; nextPageToken: string }> {\n const validatedInput = parse(SubaccountActivityInputSchema, input);\n const res = await this.#viewClient.listSubaccountActivity(\n validatedInput,\n toConnectCallOptions(options),\n );\n return {\n events: parse(v.optional(v.array(SubaccountActivityEventSchema), []), res.events),\n nextPageToken: res.nextPageToken,\n };\n }\n\n /**\n * Subscribes to private subaccount updates for an account and emits normalized subaccount records.\n */\n subscribe(input: SubscribeSubaccountsInput) {\n const channel = `private:auth:subaccounts:${input.accountId}:proto`;\n\n return this.#realtime.connectProtoChannel({\n channel,\n schema: Proto.SubaccountSchema,\n onPublication: (data) => {\n const subaccount = parse(SubaccountSchema, data);\n input.onEvent(subaccount);\n },\n onConnected: () => input.onOpen?.(),\n onDisconnected: () => input.onClose?.(),\n onError: input.onError,\n });\n }\n\n /**\n * Subscribes to private API key updates for an account through the subaccount realtime channel helper.\n */\n subscribeApiKeys(input: SubscribeApiKeysInput) {\n const channel = `private:auth:api-keys:${input.accountId}:proto`;\n\n return this.#realtime.connectProtoChannel({\n channel,\n schema: ProtoApiKeys.ApiKeySchema,\n onPublication: (data) => {\n const apiKey = parse(ApiKeySchema, data);\n input.onEvent(apiKey);\n },\n onConnected: () => input.onOpen?.(),\n onDisconnected: () => input.onClose?.(),\n onError: input.onError,\n });\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"subaccounts.js","names":["#client","Proto.SubaccountService","#viewClient","Proto.SubaccountViewService","#publicRoleClient","Proto.SubaccountRoleService","#authRoleClient","#realtime","SubaccountSchema","ApiKeySchema","Proto.SubaccountSchema","ProtoApiKeys.ApiKeySchema"],"sources":["../../../src/services/subaccounts/subaccounts.ts"],"sourcesContent":["import * as Proto from \"../../gen/auth/v1/subaccounts_pb.js\";\nimport * as ProtoApiKeys from \"../../gen/auth/v1/api_keys_pb.js\";\nimport { createClient, type Client } from \"@connectrpc/connect\";\nimport * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport { type ApiKey, ApiKeySchema } from \"../api-keys/index.js\";\nimport { formatId } from \"../../utils/base58-id.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport type { PolyesterRealtime } from \"../../realtime/index.js\";\nimport {\n DEFAULT_SUBACCOUNT_POLICY,\n SubaccountPoliciesService,\n type SubaccountPolicy,\n SubaccountPolicySchema,\n} from \"../policies/subaccount-policies/index.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport type { AuthAndPublicApiTransports } from \"../../shared/transports.js\";\nimport type { SubaccountResolver } from \"../subaccount-resolver.js\";\nimport {\n CreateSubaccountInputSchema,\n CreateSubaccountResultSchema,\n UpdateSubaccountInputSchema,\n InviteSubaccountMemberInputSchema,\n RemoveSubaccountMemberInputSchema,\n UpdateSubaccountMemberRoleInputSchema,\n ListSubaccountInvitesInputSchema,\n RespondSubaccountInviteInputSchema,\n SubaccountActivityInputSchema,\n SubaccountSchema,\n SubaccountMemberSchema,\n SubaccountInviteSchema,\n SubaccountActivityEventSchema,\n SetSubaccountMemberMfaRequirementInputSchema,\n SubaccountIdInputSchema,\n SubaccountMutationResultSchema,\n SubaccountRoleCatalogSchema,\n EffectiveSubaccountPermissionsSchema,\n type CreateSubaccountResult,\n type Subaccount,\n type SubaccountMember,\n type SubaccountInvite,\n type SubaccountEvent,\n type SubaccountMutationResult,\n type SubaccountRoleCatalog,\n type EffectiveSubaccountPermissions,\n} from \"./subaccounts.schemas.js\";\n\ninterface SubscribeSubaccountsInput extends BaseSubscribeInput<Subaccount> {\n accountId: string;\n}\n\ninterface SubscribeApiKeysInput extends BaseSubscribeInput<ApiKey> {\n accountId: string;\n}\n\n/**\n * Reads the public role catalog and creates, manages, shares, audits, and subscribes to subaccounts visible to the authenticated caller.\n */\nexport class SubaccountsService {\n readonly policies: SubaccountPoliciesService;\n\n #client: Client<typeof Proto.SubaccountService>;\n #viewClient: Client<typeof Proto.SubaccountViewService>;\n #publicRoleClient: Client<typeof Proto.SubaccountRoleService>;\n #authRoleClient: Client<typeof Proto.SubaccountRoleService>;\n #realtime: PolyesterRealtime;\n\n constructor(\n transports: AuthAndPublicApiTransports,\n realtime: PolyesterRealtime,\n resolver?: SubaccountResolver,\n ) {\n this.policies = new SubaccountPoliciesService(transports, realtime, resolver);\n this.#client = createClient(Proto.SubaccountService, transports.authApi);\n this.#viewClient = createClient(Proto.SubaccountViewService, transports.authApi);\n this.#publicRoleClient = createClient(Proto.SubaccountRoleService, transports.publicApi);\n this.#authRoleClient = createClient(Proto.SubaccountRoleService, transports.authApi);\n this.#realtime = realtime;\n }\n\n /**\n * Returns subaccounts owned by or shared with the caller plus totalCreated, including soft-deleted count metadata useful for deriving future smart-account salts.\n */\n async list(options?: PolyesterRequestOptions): Promise<{\n totalCreated: number;\n subaccounts: v.InferOutput<typeof SubaccountSchema>[];\n }> {\n const res = await this.#client.listSubaccounts({}, toConnectCallOptions(options));\n return {\n totalCreated: res.totalCreated,\n subaccounts: parse(v.array(SubaccountSchema), res.subaccounts),\n };\n }\n\n /**\n * Fetches an aggregated subaccount dashboard view with subaccount details, policy, API keys, balances, members, and outgoing invites; throws if the subaccount is missing.\n */\n async get(\n input: v.InferInput<typeof SubaccountIdInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<\n Subaccount & {\n apiKeys: ApiKey[];\n policy: SubaccountPolicy;\n members: SubaccountMember[];\n invites: SubaccountInvite[];\n }\n > {\n const validatedInput = parse(SubaccountIdInputSchema, input);\n const subaccountId = formatId(validatedInput.subaccountId);\n const res = await this.#viewClient.getSubaccount(\n {\n subaccountId: validatedInput.subaccountId,\n includeApiKeys: true,\n includeBalances: true,\n includeMembers: true,\n includeInvites: true,\n includePolicy: true,\n invitesDirection: \"outgoing\",\n },\n toConnectCallOptions(options),\n );\n if (!res.subaccount) throw new Error(`Subaccount not found: ${subaccountId}`);\n\n return {\n ...parse(SubaccountSchema, res.subaccount),\n policy: res.policy\n ? parse(SubaccountPolicySchema, res.policy)\n : DEFAULT_SUBACCOUNT_POLICY,\n apiKeys: parse(v.optional(v.array(ApiKeySchema), []), res.apiKeys),\n members: parse(v.optional(v.array(SubaccountMemberSchema), []), res.members),\n invites: v\n .parse(v.optional(v.array(SubaccountInviteSchema), []), res.invites)\n .filter((invite) => invite.subaccountId === subaccountId),\n };\n }\n\n /**\n * Creates a new subaccount under the caller's root account using a smart-account address, nonce, and signature proof.\n */\n async create(\n input: v.InferInput<typeof CreateSubaccountInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<CreateSubaccountResult> {\n const validatedInput = parse(CreateSubaccountInputSchema, input);\n const res = await this.#client.createSubaccount(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(CreateSubaccountResultSchema, res);\n }\n\n /**\n * Updates mutable subaccount display/status fields such as label and active/disabled status.\n */\n async update(\n input: v.InferInput<typeof UpdateSubaccountInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<Subaccount> {\n const validatedInput = parse(UpdateSubaccountInputSchema, input);\n const res = await this.#client.updateSubaccount(\n validatedInput,\n toConnectCallOptions(options),\n );\n if (!res.subaccount) throw new Error(\"Failed to update subaccount\");\n return parse(SubaccountSchema, res.subaccount);\n }\n\n /**\n * Creates or refreshes a pending invitation granting a role on a subaccount to another root account.\n */\n async inviteMember(\n input: v.InferInput<typeof InviteSubaccountMemberInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountInvite> {\n const validatedInput = parse(InviteSubaccountMemberInputSchema, input);\n const res = await this.#client.inviteSubaccountMember(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(SubaccountInviteSchema, res.invite);\n }\n\n /**\n * Removes delegated access for a subaccount member by grantee account ID.\n */\n async removeMember(\n input: v.InferInput<typeof RemoveSubaccountMemberInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountMutationResult> {\n const validatedInput = parse(RemoveSubaccountMemberInputSchema, input);\n const res = await this.#client.removeSubaccountMember(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(SubaccountMutationResultSchema, res);\n }\n\n /**\n * Changes an existing delegated member's role without sending a new invitation.\n */\n async updateMemberRole(\n input: v.InferInput<typeof UpdateSubaccountMemberRoleInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountMutationResult> {\n const validatedInput = parse(UpdateSubaccountMemberRoleInputSchema, input);\n const res = await this.#client.updateSubaccountMemberRole(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(SubaccountMutationResultSchema, res);\n }\n\n /**\n * Enables or disables the owner-controlled MFA requirement for delegated interactive member actions on a subaccount.\n */\n async setMemberMfaRequirement(\n input: v.InferInput<typeof SetSubaccountMemberMfaRequirementInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountMutationResult> {\n const validatedInput = parse(SetSubaccountMemberMfaRequirementInputSchema, input);\n const res = await this.#client.setSubaccountMemberMFARequirement(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(SubaccountMutationResultSchema, res);\n }\n\n /**\n * Returns incoming, outgoing, or all subaccount invitations for the caller, newest first.\n */\n async listInvites(\n input: v.InferInput<typeof ListSubaccountInvitesInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<SubaccountInvite[]> {\n const validatedInput = parse(ListSubaccountInvitesInputSchema, input);\n const res = await this.#client.listSubaccountInvites(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(v.array(SubaccountInviteSchema), res.invites);\n }\n\n /**\n * Returns the public built-in role and permission catalog with display metadata and per-role permission sets.\n */\n async listRoles(options?: PolyesterRequestOptions): Promise<SubaccountRoleCatalog> {\n const res = await this.#publicRoleClient.listSubaccountRoles(\n {},\n toConnectCallOptions(options),\n );\n return parse(SubaccountRoleCatalogSchema, res);\n }\n\n /**\n * Returns the caller's current role, effective role-granted permissions, and attached policy ID for a subaccount.\n */\n async getEffectivePermissions(\n input: v.InferInput<typeof SubaccountIdInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<EffectiveSubaccountPermissions> {\n const validatedInput = parse(SubaccountIdInputSchema, input);\n const res = await this.#authRoleClient.getEffectiveSubaccountPermissions(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(EffectiveSubaccountPermissionsSchema, res);\n }\n\n /**\n * Returns the owner and delegated members for a subaccount, including role and MFA enrollment status.\n */\n async listMembers(\n input: v.InferInput<typeof SubaccountIdInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<SubaccountMember[]> {\n const validatedInput = parse(SubaccountIdInputSchema, input);\n const res = await this.#client.listSubaccountMembers(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(v.array(SubaccountMemberSchema), res.members);\n }\n\n /**\n * Accepts or rejects an incoming invite, or cancels an outgoing invite, returning the updated invitation.\n */\n async respondInvite(\n input: v.InferInput<typeof RespondSubaccountInviteInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountInvite> {\n const validatedInput = parse(RespondSubaccountInviteInputSchema, input);\n const res = await this.#client.respondSubaccountInvite(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(SubaccountInviteSchema, res.invite);\n }\n\n /**\n * Returns paginated audit/activity events for a subaccount, newest first, with a non-negative integer limit from 0 through 200 and opaque cursor pagination.\n */\n async listEvents(\n input: v.InferInput<typeof SubaccountActivityInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<{ events: SubaccountEvent[]; nextPageToken: string }> {\n const validatedInput = parse(SubaccountActivityInputSchema, input);\n const res = await this.#viewClient.listSubaccountActivity(\n validatedInput,\n toConnectCallOptions(options),\n );\n return {\n events: parse(v.optional(v.array(SubaccountActivityEventSchema), []), res.events),\n nextPageToken: res.nextPageToken,\n };\n }\n\n /**\n * Subscribes to private subaccount updates for an account and emits normalized subaccount records.\n */\n subscribe(input: SubscribeSubaccountsInput) {\n const channel = `private:auth:subaccounts:${input.accountId}:proto`;\n\n return this.#realtime.connectProtoChannel({\n channel,\n schema: Proto.SubaccountSchema,\n onPublication: (data) => {\n const subaccount = parse(SubaccountSchema, data);\n input.onEvent(subaccount);\n },\n onConnected: () => input.onOpen?.(),\n onDisconnected: () => input.onClose?.(),\n onError: input.onError,\n });\n }\n\n /**\n * Subscribes to private API key updates for an account through the subaccount realtime channel helper.\n */\n subscribeApiKeys(input: SubscribeApiKeysInput) {\n const channel = `private:auth:api-keys:${input.accountId}:proto`;\n\n return this.#realtime.connectProtoChannel({\n channel,\n schema: ProtoApiKeys.ApiKeySchema,\n onPublication: (data) => {\n const apiKey = parse(ApiKeySchema, data);\n input.onEvent(apiKey);\n },\n onConnected: () => input.onOpen?.(),\n onDisconnected: () => input.onClose?.(),\n onError: input.onError,\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -73,21 +73,21 @@ declare const UpdateSubaccountInputSchema: v.SchemaWithPipe<readonly [v.StrictOb
|
|
|
73
73
|
readonly label: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
74
74
|
readonly icon: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
75
75
|
readonly color: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
76
|
-
readonly status: v.OptionalSchema<v.PicklistSchema<readonly ["active", "disabled"
|
|
76
|
+
readonly status: v.OptionalSchema<v.PicklistSchema<readonly ["active", "disabled"], undefined>, undefined>;
|
|
77
77
|
}, undefined>, v.CheckAction<{
|
|
78
78
|
subaccountId: bigint;
|
|
79
79
|
expectedRevision: bigint;
|
|
80
80
|
label?: string | undefined;
|
|
81
81
|
icon?: string | undefined;
|
|
82
82
|
color?: string | undefined;
|
|
83
|
-
status?: "disabled" | "active" |
|
|
83
|
+
status?: "disabled" | "active" | undefined;
|
|
84
84
|
}, "At least one subaccount field must be provided">, v.TransformAction<{
|
|
85
85
|
subaccountId: bigint;
|
|
86
86
|
expectedRevision: bigint;
|
|
87
87
|
label?: string | undefined;
|
|
88
88
|
icon?: string | undefined;
|
|
89
89
|
color?: string | undefined;
|
|
90
|
-
status?: "disabled" | "active" |
|
|
90
|
+
status?: "disabled" | "active" | undefined;
|
|
91
91
|
}, {
|
|
92
92
|
subaccountId: bigint;
|
|
93
93
|
subaccount: Partial<{
|
|
@@ -97,7 +97,7 @@ declare const UpdateSubaccountInputSchema: v.SchemaWithPipe<readonly [v.StrictOb
|
|
|
97
97
|
} & {
|
|
98
98
|
color: string;
|
|
99
99
|
} & {
|
|
100
|
-
status: "disabled" | "active"
|
|
100
|
+
status: "disabled" | "active";
|
|
101
101
|
}>;
|
|
102
102
|
updateMask: {
|
|
103
103
|
paths: string[];
|
|
@@ -105,10 +105,6 @@ declare const UpdateSubaccountInputSchema: v.SchemaWithPipe<readonly [v.StrictOb
|
|
|
105
105
|
expectedRevision: bigint;
|
|
106
106
|
}>]>;
|
|
107
107
|
type UpdateSubaccountInput = v.InferInput<typeof UpdateSubaccountInputSchema>;
|
|
108
|
-
declare const DeleteSubaccountInputSchema: v.StrictObjectSchema<{
|
|
109
|
-
readonly subaccountId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.TransformAction<string, bigint>]>;
|
|
110
|
-
readonly expectedRevision: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, v.RegexAction<string, `${string} must be a decimal integer`>, v.TransformAction<string, bigint>]>, v.CheckAction<bigint, `${string} must be greater than 0`>]>;
|
|
111
|
-
}, undefined>;
|
|
112
108
|
declare const InviteSubaccountMemberInputSchema: v.StrictObjectSchema<{
|
|
113
109
|
readonly subaccountId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.TransformAction<string, bigint>]>;
|
|
114
110
|
readonly granteeAccountId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.TransformAction<string, bigint>]>;
|
|
@@ -142,7 +138,7 @@ declare const RespondSubaccountInviteInputSchema: v.StrictObjectSchema<{
|
|
|
142
138
|
readonly action: v.SchemaWithPipe<readonly [v.PicklistSchema<["accept", "decline", "cancel"], undefined>, v.TransformAction<"accept" | "decline" | "cancel", SubaccountInviteAction.ACCEPT | SubaccountInviteAction.DECLINE | SubaccountInviteAction.CANCEL>]>;
|
|
143
139
|
}, undefined>;
|
|
144
140
|
type RespondSubaccountInviteInput = v.InferInput<typeof RespondSubaccountInviteInputSchema>;
|
|
145
|
-
declare const ProtoSubaccountStatusSchema: v.SchemaWithPipe<readonly [v.PicklistSchema<readonly ["active", "disabled"
|
|
141
|
+
declare const ProtoSubaccountStatusSchema: v.SchemaWithPipe<readonly [v.PicklistSchema<readonly ["active", "disabled"], undefined>, v.TransformAction<"disabled" | "active", "disabled" | "active">]>;
|
|
146
142
|
type SubaccountStatus = v.InferOutput<typeof ProtoSubaccountStatusSchema>;
|
|
147
143
|
declare const SubaccountSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
148
144
|
readonly id: v.SchemaWithPipe<readonly [v.BigintSchema<undefined>, v.TransformAction<bigint, string>]>;
|
|
@@ -150,7 +146,7 @@ declare const SubaccountSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
|
150
146
|
readonly label: v.OptionalSchema<v.StringSchema<undefined>, "">;
|
|
151
147
|
readonly icon: v.OptionalSchema<v.StringSchema<undefined>, "">;
|
|
152
148
|
readonly color: v.OptionalSchema<v.StringSchema<undefined>, "">;
|
|
153
|
-
readonly status: v.SchemaWithPipe<readonly [v.PicklistSchema<readonly ["active", "disabled"
|
|
149
|
+
readonly status: v.SchemaWithPipe<readonly [v.PicklistSchema<readonly ["active", "disabled"], undefined>, v.TransformAction<"disabled" | "active", "disabled" | "active">]>;
|
|
154
150
|
readonly smartAccountAddress: v.StringSchema<undefined>;
|
|
155
151
|
readonly smartAccountSaltNonce: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
|
|
156
152
|
readonly ownerUsername: v.OptionalSchema<v.StringSchema<undefined>, "">;
|
|
@@ -169,7 +165,7 @@ declare const SubaccountSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
|
169
165
|
label: string;
|
|
170
166
|
icon: string;
|
|
171
167
|
color: string;
|
|
172
|
-
status: "disabled" | "active"
|
|
168
|
+
status: "disabled" | "active";
|
|
173
169
|
smartAccountAddress: string;
|
|
174
170
|
smartAccountSaltNonce?: number | undefined;
|
|
175
171
|
ownerUsername: string;
|
|
@@ -190,7 +186,7 @@ declare const SubaccountSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
|
190
186
|
label: string;
|
|
191
187
|
icon: string;
|
|
192
188
|
color: string;
|
|
193
|
-
status: "disabled" | "active"
|
|
189
|
+
status: "disabled" | "active";
|
|
194
190
|
smartAccountAddress: string;
|
|
195
191
|
smartAccountSaltNonce?: number | undefined;
|
|
196
192
|
ownerUsername: string;
|
|
@@ -284,7 +280,7 @@ declare const SubaccountActivityEventSchema: v.ObjectSchema<{
|
|
|
284
280
|
nanos: number;
|
|
285
281
|
} | undefined, number | undefined>]>;
|
|
286
282
|
readonly entityKind: v.SchemaWithPipe<readonly [v.EnumSchema<typeof ActivityEntityKind, undefined>, v.TransformAction<ActivityEntityKind, "unspecified" | "api_key" | "account" | "subaccount" | "destination" | "session" | "policy" | "member" | "invite" | "security">]>;
|
|
287
|
-
readonly eventAction: v.SchemaWithPipe<readonly [v.EnumSchema<typeof ActivityEventAction, undefined>, v.TransformAction<ActivityEventAction, "unspecified" | "enabled" | "disabled" | "
|
|
283
|
+
readonly eventAction: v.SchemaWithPipe<readonly [v.EnumSchema<typeof ActivityEventAction, undefined>, v.TransformAction<ActivityEventAction, "unspecified" | "enabled" | "disabled" | "failed" | "created" | "updated" | "deleted" | "removed" | "role_set" | "received" | "replied" | "revoked" | "blocked" | "hold_placed" | "hold_released">]>;
|
|
288
284
|
readonly source: v.SchemaWithPipe<readonly [v.EnumSchema<typeof ActivityEventSource, undefined>, v.TransformAction<ActivityEventSource, "unspecified" | "web" | "mobile" | "api">]>;
|
|
289
285
|
readonly ip: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
290
286
|
readonly userAgent: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
@@ -293,5 +289,5 @@ declare const SubaccountActivityEventSchema: v.ObjectSchema<{
|
|
|
293
289
|
}, undefined>;
|
|
294
290
|
type SubaccountEvent = v.InferOutput<typeof SubaccountActivityEventSchema>;
|
|
295
291
|
//#endregion
|
|
296
|
-
export { CreateSubaccountInput, CreateSubaccountInputSchema, CreateSubaccountResult, CreateSubaccountResultSchema,
|
|
292
|
+
export { CreateSubaccountInput, CreateSubaccountInputSchema, CreateSubaccountResult, CreateSubaccountResultSchema, EffectiveSubaccountPermissions, EffectiveSubaccountPermissionsSchema, InviteSubaccountMemberInput, InviteSubaccountMemberInputSchema, ListSubaccountInvitesInput, ListSubaccountInvitesInputSchema, RemoveSubaccountMemberInput, RemoveSubaccountMemberInputSchema, RespondSubaccountInviteInput, RespondSubaccountInviteInputSchema, SetSubaccountMemberMfaRequirementInput, SetSubaccountMemberMfaRequirementInputSchema, Subaccount, SubaccountActivityEventSchema, SubaccountActivityInput, SubaccountActivityInputSchema, SubaccountEvent, SubaccountIdInput, SubaccountIdInputSchema, SubaccountInvite, SubaccountInviteSchema, SubaccountInviteStatus, SubaccountMember, SubaccountMemberSchema, SubaccountMutationResult, SubaccountMutationResultSchema, SubaccountPermission, SubaccountPermissionDefinition, SubaccountPermissionDefinitionSchema, SubaccountRole, SubaccountRoleCatalog, SubaccountRoleCatalogSchema, SubaccountRoleDefinition, SubaccountRoleDefinitionSchema, SubaccountRoleSchema, SubaccountSchema, SubaccountStatus, UpdateSubaccountInput, UpdateSubaccountInputSchema, UpdateSubaccountMemberRoleInput, UpdateSubaccountMemberRoleInputSchema };
|
|
297
293
|
//# sourceMappingURL=subaccounts.schemas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subaccounts.schemas.d.ts","names":[],"sources":["../../../src/services/subaccounts/subaccounts.schemas.ts"],"mappings":";;;;cAoCa,sBAAoB,EAAA;KAErB,iBAAiB,EAAE,mBAAmB;cAS5C,iCAA+B,EAAA,yBAAA,EAAA,kBAAA,oCAAA,EAAA,gBAAA;KAYzB,uBAAuB,EAAE,mBAAmB;cAE3C,sCAAoC,EAAA;;;;;;KAiBrC,iCAAiC,EAAE,mBACpC;cAGE,gCAA8B,EAAA;;;;;;;KAQ/B,2BAA2B,EAAE,mBAAmB;cAE/C,6BAA2B,EAAA;;;;;;;;;;;;;;;KAK5B,wBAAwB,EAAE,mBAAmB;cAE5C,sCAAoC,EAAA;;;;;KAMrC,iCAAiC,EAAE,mBACpC;cAGE,6BAA2B,EAAA;;;;;;;;;;KAW5B,wBAAwB,EAAE,kBAAkB;cAE3C,yBAAuB,EAAA;;;KAIxB,oBAAoB,EAAE,kBAAkB;cAEvC,8BAA4B,EAAA;;;;;;KAO7B,yBAAyB,EAAE,mBAAmB;cAE7C,gCAA8B,EAAA;KAE/B,2BAA2B,EAAE,mBAAmB;cAmB/C,6BAA2B,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4B5B,wBAAwB,EAAE,kBAAkB;cAE3C,
|
|
1
|
+
{"version":3,"file":"subaccounts.schemas.d.ts","names":[],"sources":["../../../src/services/subaccounts/subaccounts.schemas.ts"],"mappings":";;;;cAoCa,sBAAoB,EAAA;KAErB,iBAAiB,EAAE,mBAAmB;cAS5C,iCAA+B,EAAA,yBAAA,EAAA,kBAAA,oCAAA,EAAA,gBAAA;KAYzB,uBAAuB,EAAE,mBAAmB;cAE3C,sCAAoC,EAAA;;;;;;KAiBrC,iCAAiC,EAAE,mBACpC;cAGE,gCAA8B,EAAA;;;;;;;KAQ/B,2BAA2B,EAAE,mBAAmB;cAE/C,6BAA2B,EAAA;;;;;;;;;;;;;;;KAK5B,wBAAwB,EAAE,mBAAmB;cAE5C,sCAAoC,EAAA;;;;;KAMrC,iCAAiC,EAAE,mBACpC;cAGE,6BAA2B,EAAA;;;;;;;;;;KAW5B,wBAAwB,EAAE,kBAAkB;cAE3C,yBAAuB,EAAA;;;KAIxB,oBAAoB,EAAE,kBAAkB;cAEvC,8BAA4B,EAAA;;;;;;KAO7B,yBAAyB,EAAE,mBAAmB;cAE7C,gCAA8B,EAAA;KAE/B,2BAA2B,EAAE,mBAAmB;cAmB/C,6BAA2B,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4B5B,wBAAwB,EAAE,kBAAkB;cAE3C,mCAAiC,EAAA;;;;;KASlC,8BAA8B,EAAE,kBAAkB;cAEjD,mCAAiC,EAAA;;;;KAKlC,8BAA8B,EAAE,kBAAkB;cAEjD,uCAAqC,EAAA;;;;;KAEtC,kCAAkC,EAAE,kBACrC;cAGE,8CAA4C,EAAA;;;;KAK7C,yCAAyC,EAAE,kBAC5C;cAGE,kCAAgC,EAAA;;;KAIjC,6BAA6B,EAAE,kBAAkB;cAIvD,oBAAkB,EAAA;KAEZ,yBAAyB,EAAE,mBAAmB;cAI7C,oCAAkC,EAAA;;;;KAQnC,+BAA+B,EAAE,kBAAkB;cAEzD,6BAA2B,EAAA,yBAAA,EAAA,4DAAA,EAAA;KAKrB,mBAAmB,EAAE,mBAAmB;cAEvC,kBAAgB,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAyBjB,aAAa,EAAE,mBAAmB;cAEjC,wBAAsB,EAAA;;;;;;;;KASvB,mBAAmB,EAAE,mBAAmB;cAEvC,wBAAsB,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4CvB,mBAAmB,EAAE,mBAAmB;cAEvC,+BAA6B,EAAA;;;;;KAM9B,0BAA0B,EAAE,kBAAkB;cAE7C,+BAA6B,EAAA;;;;;;;;;;;;;;;;KA4C9B,kBAAkB,EAAE,mBAAmB"}
|
|
@@ -91,10 +91,6 @@ const UpdateSubaccountInputSchema = v.pipe(v.strictObject({
|
|
|
91
91
|
expectedRevision
|
|
92
92
|
};
|
|
93
93
|
}));
|
|
94
|
-
const DeleteSubaccountInputSchema = v.strictObject({
|
|
95
|
-
subaccountId: idInputSchema("subaccountId"),
|
|
96
|
-
expectedRevision: positiveBigintStringInputSchema("expectedRevision")
|
|
97
|
-
});
|
|
98
94
|
const InviteSubaccountMemberInputSchema = v.strictObject({
|
|
99
95
|
subaccountId: idInputSchema("subaccountId"),
|
|
100
96
|
granteeAccountId: idInputSchema("granteeAccountId"),
|
|
@@ -198,6 +194,6 @@ const SubaccountActivityEventSchema = v.object({
|
|
|
198
194
|
payloadJson: v.pipe(v.string(), v.transform((v) => JSON.parse(v)))
|
|
199
195
|
});
|
|
200
196
|
//#endregion
|
|
201
|
-
export { CreateSubaccountInputSchema, CreateSubaccountResultSchema,
|
|
197
|
+
export { CreateSubaccountInputSchema, CreateSubaccountResultSchema, EffectiveSubaccountPermissionsSchema, InviteSubaccountMemberInputSchema, ListSubaccountInvitesInputSchema, RemoveSubaccountMemberInputSchema, RespondSubaccountInviteInputSchema, SetSubaccountMemberMfaRequirementInputSchema, SubaccountActivityEventSchema, SubaccountActivityInputSchema, SubaccountIdInputSchema, SubaccountInviteSchema, SubaccountMemberSchema, SubaccountMutationResultSchema, SubaccountPermissionDefinitionSchema, SubaccountRoleCatalogSchema, SubaccountRoleDefinitionSchema, SubaccountRoleSchema, SubaccountSchema, UpdateSubaccountInputSchema, UpdateSubaccountMemberRoleInputSchema };
|
|
202
198
|
|
|
203
199
|
//# sourceMappingURL=subaccounts.schemas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subaccounts.schemas.js","names":["Proto.SubaccountRole","Proto.SubaccountPermission","ProtoPolicies.PolicyAction","Proto.SubaccountInviteStatus","Proto.ActivityEntityKind","Proto.ActivityEventAction","Proto.ActivityEventSource"],"sources":["../../../src/services/subaccounts/subaccounts.schemas.ts"],"sourcesContent":["import * as Proto from \"../../gen/auth/v1/subaccounts_pb.js\";\nimport * as ProtoPolicies from \"../../gen/auth/v1/policies_pb.js\";\nimport * as v from \"valibot\";\nimport {\n BigIntStringSchema,\n OptionalTimestampMsSchema,\n PublicIdSchema,\n TimestampSchema,\n idInputSchema,\n positiveBigintStringInputSchema,\n} from \"../../shared/schemas.js\";\nimport { tsObjToMs, tsObjToNsString } from \"../../utils/time.js\";\nimport { requiredEnumLabel } from \"../../shared/proto-enum-codec.js\";\nimport {\n SubaccountRoleCodec,\n SubaccountPermissionCodec,\n InviteActionCodec,\n InviteStatusCodec,\n SubaccountStatusCodec,\n SUBACCOUNT_STATUS_VALUES,\n ActivityEntityKindCodec,\n ActivityEventActionCodec,\n ActivityEventSourceCodec,\n} from \"./subaccounts.codecs.js\";\nimport { PolicyActionCodec } from \"../policies/shared.codecs.js\";\nimport { buildProtoPatch, defineProtoPatchFields } from \"../../utils/proto-patch.js\";\n\nconst SUBACCOUNT_ROLE_VALUES = [\n \"owner\",\n \"admin\",\n \"treasury\",\n \"leveraged_trader\",\n \"trader\",\n \"viewer\",\n] as const;\n\nexport const SubaccountRoleSchema = v.picklist(SUBACCOUNT_ROLE_VALUES);\n\nexport type SubaccountRole = v.InferOutput<typeof SubaccountRoleSchema>;\n\nconst ProtoSubaccountRoleSchema = v.pipe(\n v.enum(Proto.SubaccountRole),\n v.transform((role) =>\n requiredEnumLabel(SubaccountRoleCodec.protoToOutput, role, \"SubaccountRoleSchema\", \"role\"),\n ),\n);\n\nconst ProtoSubaccountPermissionSchema = v.pipe(\n v.enum(Proto.SubaccountPermission),\n v.transform((permission) =>\n requiredEnumLabel(\n SubaccountPermissionCodec.protoToOutput,\n permission,\n \"SubaccountPermissionSchema\",\n \"permission\",\n ),\n ),\n);\n\nexport type SubaccountPermission = v.InferOutput<typeof ProtoSubaccountPermissionSchema>;\n\nexport const SubaccountPermissionDefinitionSchema = v.object({\n permission: ProtoSubaccountPermissionSchema,\n displayName: v.optional(v.string(), \"\"),\n description: v.optional(v.string(), \"\"),\n policyAction: v.pipe(\n v.enum(ProtoPolicies.PolicyAction),\n v.transform((action) =>\n requiredEnumLabel(\n PolicyActionCodec.protoToOutput,\n action,\n \"SubaccountPermissionDefinitionSchema\",\n \"policy action\",\n ),\n ),\n ),\n});\n\nexport type SubaccountPermissionDefinition = v.InferOutput<\n typeof SubaccountPermissionDefinitionSchema\n>;\n\nexport const SubaccountRoleDefinitionSchema = v.object({\n role: ProtoSubaccountRoleSchema,\n displayName: v.optional(v.string(), \"\"),\n description: v.optional(v.string(), \"\"),\n assignable: v.optional(v.boolean(), false),\n permissions: v.optional(v.array(ProtoSubaccountPermissionSchema), []),\n});\n\nexport type SubaccountRoleDefinition = v.InferOutput<typeof SubaccountRoleDefinitionSchema>;\n\nexport const SubaccountRoleCatalogSchema = v.object({\n permissions: v.optional(v.array(SubaccountPermissionDefinitionSchema), []),\n roles: v.optional(v.array(SubaccountRoleDefinitionSchema), []),\n});\n\nexport type SubaccountRoleCatalog = v.InferOutput<typeof SubaccountRoleCatalogSchema>;\n\nexport const EffectiveSubaccountPermissionsSchema = v.object({\n role: ProtoSubaccountRoleSchema,\n permissions: v.optional(v.array(ProtoSubaccountPermissionSchema), []),\n subaccountPolicyId: PublicIdSchema,\n});\n\nexport type EffectiveSubaccountPermissions = v.InferOutput<\n typeof EffectiveSubaccountPermissionsSchema\n>;\n\nexport const CreateSubaccountInputSchema = v.strictObject({\n label: v.optional(v.string(), \"\"),\n icon: v.optional(v.string(), \"\"),\n color: v.optional(v.string(), \"\"),\n smartAccountAddress: v.string(),\n nonce: v.string(),\n signature: v.string(),\n primaryWalletAddress: v.optional(v.string(), \"\"),\n walletProvider: v.optional(v.string(), \"\"),\n});\n\nexport type CreateSubaccountInput = v.InferInput<typeof CreateSubaccountInputSchema>;\n\nexport const SubaccountIdInputSchema = v.strictObject({\n subaccountId: idInputSchema(\"subaccountId\"),\n});\n\nexport type SubaccountIdInput = v.InferInput<typeof SubaccountIdInputSchema>;\n\nexport const CreateSubaccountResultSchema = v.object({\n subaccountId: PublicIdSchema,\n totalCreated: v.number(),\n smartAccountSaltNonce: v.number(),\n revision: BigIntStringSchema,\n});\n\nexport type CreateSubaccountResult = v.InferOutput<typeof CreateSubaccountResultSchema>;\n\nexport const SubaccountMutationResultSchema = v.object({});\n\nexport type SubaccountMutationResult = v.InferOutput<typeof SubaccountMutationResultSchema>;\n\ntype SubaccountPatch = {\n label?: string;\n icon?: string;\n color?: string;\n status?: (typeof SUBACCOUNT_STATUS_VALUES)[number];\n};\n\nconst SUBACCOUNT_PATCH_FIELDS = defineProtoPatchFields<SubaccountPatch>()({\n label: { path: \"label\", encode: (label) => ({ label }) },\n icon: { path: \"icon\", encode: (icon) => ({ icon }) },\n color: { path: \"color\", encode: (color) => ({ color }) },\n status: {\n path: \"status\",\n encode: (status) => ({ status: SubaccountStatusCodec.inputToProto[status] }),\n },\n});\n\nexport const UpdateSubaccountInputSchema = v.pipe(\n v.strictObject({\n subaccountId: idInputSchema(\"subaccountId\"),\n expectedRevision: positiveBigintStringInputSchema(\"expectedRevision\"),\n label: v.optional(v.string()),\n icon: v.optional(v.string()),\n color: v.optional(v.string()),\n status: v.optional(v.picklist(SUBACCOUNT_STATUS_VALUES)),\n }),\n v.check(\n ({ label, icon, color, status }) =>\n label !== undefined ||\n icon !== undefined ||\n color !== undefined ||\n status !== undefined,\n \"At least one subaccount field must be provided\",\n ),\n v.transform(({ subaccountId, expectedRevision, ...input }) => {\n const { patch: subaccount, updateMask } = buildProtoPatch(input, SUBACCOUNT_PATCH_FIELDS);\n return {\n subaccountId,\n subaccount,\n updateMask,\n expectedRevision,\n };\n }),\n);\n\nexport type UpdateSubaccountInput = v.InferInput<typeof UpdateSubaccountInputSchema>;\n\nexport const DeleteSubaccountInputSchema = v.strictObject({\n subaccountId: idInputSchema(\"subaccountId\"),\n expectedRevision: positiveBigintStringInputSchema(\"expectedRevision\"),\n});\n\nexport type DeleteSubaccountInput = v.InferInput<typeof DeleteSubaccountInputSchema>;\n\nexport const InviteSubaccountMemberInputSchema = v.strictObject({\n subaccountId: idInputSchema(\"subaccountId\"),\n granteeAccountId: idInputSchema(\"granteeAccountId\"),\n role: v.pipe(\n SubaccountRoleSchema,\n v.transform((role) => SubaccountRoleCodec.inputToProto[role]),\n ),\n});\n\nexport type InviteSubaccountMemberInput = v.InferInput<typeof InviteSubaccountMemberInputSchema>;\n\nexport const RemoveSubaccountMemberInputSchema = v.strictObject({\n subaccountId: idInputSchema(\"subaccountId\"),\n granteeAccountId: idInputSchema(\"granteeAccountId\"),\n});\n\nexport type RemoveSubaccountMemberInput = v.InferInput<typeof RemoveSubaccountMemberInputSchema>;\n\nexport const UpdateSubaccountMemberRoleInputSchema = InviteSubaccountMemberInputSchema;\n\nexport type UpdateSubaccountMemberRoleInput = v.InferInput<\n typeof UpdateSubaccountMemberRoleInputSchema\n>;\n\nexport const SetSubaccountMemberMfaRequirementInputSchema = v.strictObject({\n subaccountId: idInputSchema(\"subaccountId\"),\n requireMemberMfa: v.boolean(),\n});\n\nexport type SetSubaccountMemberMfaRequirementInput = v.InferInput<\n typeof SetSubaccountMemberMfaRequirementInputSchema\n>;\n\nexport const ListSubaccountInvitesInputSchema = v.strictObject({\n direction: v.optional(v.picklist([\"incoming\", \"outgoing\", \"\"]), \"\"),\n});\n\nexport type ListSubaccountInvitesInput = v.InferInput<typeof ListSubaccountInvitesInputSchema>;\n\nconst InviteActionSchema = v.picklist([\"accept\", \"decline\", \"cancel\"]);\n\nconst InviteStatusSchema = v.picklist([\"pending\", \"accepted\", \"declined\", \"cancelled\"]);\n\nexport type SubaccountInviteStatus = v.InferOutput<typeof InviteStatusSchema>;\n\nconst ProtoInviteStatusSchema = v.enum(Proto.SubaccountInviteStatus);\n\nexport const RespondSubaccountInviteInputSchema = v.strictObject({\n inviteId: idInputSchema(\"inviteId\"),\n action: v.pipe(\n InviteActionSchema,\n v.transform((v) => InviteActionCodec.inputToProto[v]),\n ),\n});\n\nexport type RespondSubaccountInviteInput = v.InferInput<typeof RespondSubaccountInviteInputSchema>;\n\nconst ProtoSubaccountStatusSchema = v.pipe(\n v.picklist(SUBACCOUNT_STATUS_VALUES),\n v.transform((status) => SubaccountStatusCodec.protoToOutput[status]),\n);\n\nexport type SubaccountStatus = v.InferOutput<typeof ProtoSubaccountStatusSchema>;\n\nexport const SubaccountSchema = v.pipe(\n v.object({\n id: PublicIdSchema,\n role: ProtoSubaccountRoleSchema,\n label: v.optional(v.string(), \"\"),\n icon: v.optional(v.string(), \"\"),\n color: v.optional(v.string(), \"\"),\n status: ProtoSubaccountStatusSchema,\n smartAccountAddress: v.string(),\n smartAccountSaltNonce: v.optional(v.number()),\n ownerUsername: v.optional(v.string(), \"\"),\n ownerAvatarUrl: v.optional(v.string(), \"\"),\n ownerRootSmartAccountAddress: v.string(),\n subaccountPolicyId: PublicIdSchema,\n requireMemberMfa: v.optional(v.boolean(), false),\n updatedAt: v.optional(TimestampSchema),\n revision: BigIntStringSchema,\n }),\n v.transform(({ updatedAt, ...subaccount }) => ({\n ...subaccount,\n updatedAt: tsObjToMs(updatedAt),\n updatedAtNs: tsObjToNsString(updatedAt),\n })),\n);\n\nexport type Subaccount = v.InferOutput<typeof SubaccountSchema>;\n\nexport const SubaccountMemberSchema = v.object({\n accountId: PublicIdSchema,\n role: ProtoSubaccountRoleSchema,\n username: v.optional(v.string(), \"\"),\n smartAccountAddress: v.string(),\n avatarUrl: v.optional(v.string(), \"\"),\n mfaEnrolled: v.optional(v.boolean(), false),\n});\n\nexport type SubaccountMember = v.InferOutput<typeof SubaccountMemberSchema>;\n\nexport const SubaccountInviteSchema = v.pipe(\n v.object({\n id: PublicIdSchema,\n subaccountId: PublicIdSchema,\n granteeAccountId: PublicIdSchema,\n inviterAccountId: PublicIdSchema,\n role: ProtoSubaccountRoleSchema,\n status: v.pipe(\n ProtoInviteStatusSchema,\n v.transform((v) =>\n requiredEnumLabel(\n InviteStatusCodec.protoToOutput,\n v,\n \"SubaccountInviteSchema\",\n \"status\",\n ),\n ),\n ),\n createdAt: OptionalTimestampMsSchema,\n respondedAt: OptionalTimestampMsSchema,\n granteeUsername: v.optional(v.string(), \"\"),\n inviterUsername: v.optional(v.string(), \"\"),\n subaccountLabel: v.optional(v.string(), \"\"),\n inviterRootSmartAccountAddress: v.string(),\n granteeRootSmartAccountAddress: v.string(),\n requireMemberMfa: v.boolean(),\n }),\n v.transform(\n ({\n subaccountLabel,\n subaccountId,\n inviterRootSmartAccountAddress,\n granteeRootSmartAccountAddress,\n ...rest\n }) => ({\n ...rest,\n subaccountId,\n subaccountLabel,\n inviterSmartAccountAddress: inviterRootSmartAccountAddress,\n granteeSmartAccountAddress: granteeRootSmartAccountAddress,\n }),\n ),\n);\n\nexport type SubaccountInvite = v.InferOutput<typeof SubaccountInviteSchema>;\n\nexport const SubaccountActivityInputSchema = v.strictObject({\n subaccountId: idInputSchema(\"subaccountId\"),\n limit: v.optional(v.pipe(v.number(), v.integer(), v.minValue(0), v.maxValue(200)), 50),\n pageToken: v.optional(v.pipe(v.string(), v.trim()), \"\"),\n});\n\nexport type SubaccountActivityInput = v.InferInput<typeof SubaccountActivityInputSchema>;\n\nexport const SubaccountActivityEventSchema = v.object({\n createdAt: OptionalTimestampMsSchema,\n entityKind: v.pipe(\n v.enum(Proto.ActivityEntityKind),\n v.transform((value) =>\n requiredEnumLabel(\n ActivityEntityKindCodec.protoToOutput,\n value,\n \"SubaccountActivityEventSchema\",\n \"entity kind\",\n ),\n ),\n ),\n eventAction: v.pipe(\n v.enum(Proto.ActivityEventAction),\n v.transform((value) =>\n requiredEnumLabel(\n ActivityEventActionCodec.protoToOutput,\n value,\n \"SubaccountActivityEventSchema\",\n \"event action\",\n ),\n ),\n ),\n source: v.pipe(\n v.enum(Proto.ActivityEventSource),\n v.transform((value) =>\n requiredEnumLabel(\n ActivityEventSourceCodec.protoToOutput,\n value,\n \"SubaccountActivityEventSchema\",\n \"source\",\n ),\n ),\n ),\n ip: v.optional(v.string()),\n userAgent: v.optional(v.string()),\n actorAccountId: PublicIdSchema,\n payloadJson: v.pipe(\n v.string(),\n v.transform((v) => JSON.parse(v)),\n ),\n});\n\nexport type SubaccountEvent = v.InferOutput<typeof SubaccountActivityEventSchema>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"subaccounts.schemas.js","names":["Proto.SubaccountRole","Proto.SubaccountPermission","ProtoPolicies.PolicyAction","Proto.SubaccountInviteStatus","Proto.ActivityEntityKind","Proto.ActivityEventAction","Proto.ActivityEventSource"],"sources":["../../../src/services/subaccounts/subaccounts.schemas.ts"],"sourcesContent":["import * as Proto from \"../../gen/auth/v1/subaccounts_pb.js\";\nimport * as ProtoPolicies from \"../../gen/auth/v1/policies_pb.js\";\nimport * as v from \"valibot\";\nimport {\n BigIntStringSchema,\n OptionalTimestampMsSchema,\n PublicIdSchema,\n TimestampSchema,\n idInputSchema,\n positiveBigintStringInputSchema,\n} from \"../../shared/schemas.js\";\nimport { tsObjToMs, tsObjToNsString } from \"../../utils/time.js\";\nimport { requiredEnumLabel } from \"../../shared/proto-enum-codec.js\";\nimport {\n SubaccountRoleCodec,\n SubaccountPermissionCodec,\n InviteActionCodec,\n InviteStatusCodec,\n SubaccountStatusCodec,\n SUBACCOUNT_STATUS_VALUES,\n ActivityEntityKindCodec,\n ActivityEventActionCodec,\n ActivityEventSourceCodec,\n} from \"./subaccounts.codecs.js\";\nimport { PolicyActionCodec } from \"../policies/shared.codecs.js\";\nimport { buildProtoPatch, defineProtoPatchFields } from \"../../utils/proto-patch.js\";\n\nconst SUBACCOUNT_ROLE_VALUES = [\n \"owner\",\n \"admin\",\n \"treasury\",\n \"leveraged_trader\",\n \"trader\",\n \"viewer\",\n] as const;\n\nexport const SubaccountRoleSchema = v.picklist(SUBACCOUNT_ROLE_VALUES);\n\nexport type SubaccountRole = v.InferOutput<typeof SubaccountRoleSchema>;\n\nconst ProtoSubaccountRoleSchema = v.pipe(\n v.enum(Proto.SubaccountRole),\n v.transform((role) =>\n requiredEnumLabel(SubaccountRoleCodec.protoToOutput, role, \"SubaccountRoleSchema\", \"role\"),\n ),\n);\n\nconst ProtoSubaccountPermissionSchema = v.pipe(\n v.enum(Proto.SubaccountPermission),\n v.transform((permission) =>\n requiredEnumLabel(\n SubaccountPermissionCodec.protoToOutput,\n permission,\n \"SubaccountPermissionSchema\",\n \"permission\",\n ),\n ),\n);\n\nexport type SubaccountPermission = v.InferOutput<typeof ProtoSubaccountPermissionSchema>;\n\nexport const SubaccountPermissionDefinitionSchema = v.object({\n permission: ProtoSubaccountPermissionSchema,\n displayName: v.optional(v.string(), \"\"),\n description: v.optional(v.string(), \"\"),\n policyAction: v.pipe(\n v.enum(ProtoPolicies.PolicyAction),\n v.transform((action) =>\n requiredEnumLabel(\n PolicyActionCodec.protoToOutput,\n action,\n \"SubaccountPermissionDefinitionSchema\",\n \"policy action\",\n ),\n ),\n ),\n});\n\nexport type SubaccountPermissionDefinition = v.InferOutput<\n typeof SubaccountPermissionDefinitionSchema\n>;\n\nexport const SubaccountRoleDefinitionSchema = v.object({\n role: ProtoSubaccountRoleSchema,\n displayName: v.optional(v.string(), \"\"),\n description: v.optional(v.string(), \"\"),\n assignable: v.optional(v.boolean(), false),\n permissions: v.optional(v.array(ProtoSubaccountPermissionSchema), []),\n});\n\nexport type SubaccountRoleDefinition = v.InferOutput<typeof SubaccountRoleDefinitionSchema>;\n\nexport const SubaccountRoleCatalogSchema = v.object({\n permissions: v.optional(v.array(SubaccountPermissionDefinitionSchema), []),\n roles: v.optional(v.array(SubaccountRoleDefinitionSchema), []),\n});\n\nexport type SubaccountRoleCatalog = v.InferOutput<typeof SubaccountRoleCatalogSchema>;\n\nexport const EffectiveSubaccountPermissionsSchema = v.object({\n role: ProtoSubaccountRoleSchema,\n permissions: v.optional(v.array(ProtoSubaccountPermissionSchema), []),\n subaccountPolicyId: PublicIdSchema,\n});\n\nexport type EffectiveSubaccountPermissions = v.InferOutput<\n typeof EffectiveSubaccountPermissionsSchema\n>;\n\nexport const CreateSubaccountInputSchema = v.strictObject({\n label: v.optional(v.string(), \"\"),\n icon: v.optional(v.string(), \"\"),\n color: v.optional(v.string(), \"\"),\n smartAccountAddress: v.string(),\n nonce: v.string(),\n signature: v.string(),\n primaryWalletAddress: v.optional(v.string(), \"\"),\n walletProvider: v.optional(v.string(), \"\"),\n});\n\nexport type CreateSubaccountInput = v.InferInput<typeof CreateSubaccountInputSchema>;\n\nexport const SubaccountIdInputSchema = v.strictObject({\n subaccountId: idInputSchema(\"subaccountId\"),\n});\n\nexport type SubaccountIdInput = v.InferInput<typeof SubaccountIdInputSchema>;\n\nexport const CreateSubaccountResultSchema = v.object({\n subaccountId: PublicIdSchema,\n totalCreated: v.number(),\n smartAccountSaltNonce: v.number(),\n revision: BigIntStringSchema,\n});\n\nexport type CreateSubaccountResult = v.InferOutput<typeof CreateSubaccountResultSchema>;\n\nexport const SubaccountMutationResultSchema = v.object({});\n\nexport type SubaccountMutationResult = v.InferOutput<typeof SubaccountMutationResultSchema>;\n\ntype SubaccountPatch = {\n label?: string;\n icon?: string;\n color?: string;\n status?: (typeof SUBACCOUNT_STATUS_VALUES)[number];\n};\n\nconst SUBACCOUNT_PATCH_FIELDS = defineProtoPatchFields<SubaccountPatch>()({\n label: { path: \"label\", encode: (label) => ({ label }) },\n icon: { path: \"icon\", encode: (icon) => ({ icon }) },\n color: { path: \"color\", encode: (color) => ({ color }) },\n status: {\n path: \"status\",\n encode: (status) => ({ status: SubaccountStatusCodec.inputToProto[status] }),\n },\n});\n\nexport const UpdateSubaccountInputSchema = v.pipe(\n v.strictObject({\n subaccountId: idInputSchema(\"subaccountId\"),\n expectedRevision: positiveBigintStringInputSchema(\"expectedRevision\"),\n label: v.optional(v.string()),\n icon: v.optional(v.string()),\n color: v.optional(v.string()),\n status: v.optional(v.picklist(SUBACCOUNT_STATUS_VALUES)),\n }),\n v.check(\n ({ label, icon, color, status }) =>\n label !== undefined ||\n icon !== undefined ||\n color !== undefined ||\n status !== undefined,\n \"At least one subaccount field must be provided\",\n ),\n v.transform(({ subaccountId, expectedRevision, ...input }) => {\n const { patch: subaccount, updateMask } = buildProtoPatch(input, SUBACCOUNT_PATCH_FIELDS);\n return {\n subaccountId,\n subaccount,\n updateMask,\n expectedRevision,\n };\n }),\n);\n\nexport type UpdateSubaccountInput = v.InferInput<typeof UpdateSubaccountInputSchema>;\n\nexport const InviteSubaccountMemberInputSchema = v.strictObject({\n subaccountId: idInputSchema(\"subaccountId\"),\n granteeAccountId: idInputSchema(\"granteeAccountId\"),\n role: v.pipe(\n SubaccountRoleSchema,\n v.transform((role) => SubaccountRoleCodec.inputToProto[role]),\n ),\n});\n\nexport type InviteSubaccountMemberInput = v.InferInput<typeof InviteSubaccountMemberInputSchema>;\n\nexport const RemoveSubaccountMemberInputSchema = v.strictObject({\n subaccountId: idInputSchema(\"subaccountId\"),\n granteeAccountId: idInputSchema(\"granteeAccountId\"),\n});\n\nexport type RemoveSubaccountMemberInput = v.InferInput<typeof RemoveSubaccountMemberInputSchema>;\n\nexport const UpdateSubaccountMemberRoleInputSchema = InviteSubaccountMemberInputSchema;\n\nexport type UpdateSubaccountMemberRoleInput = v.InferInput<\n typeof UpdateSubaccountMemberRoleInputSchema\n>;\n\nexport const SetSubaccountMemberMfaRequirementInputSchema = v.strictObject({\n subaccountId: idInputSchema(\"subaccountId\"),\n requireMemberMfa: v.boolean(),\n});\n\nexport type SetSubaccountMemberMfaRequirementInput = v.InferInput<\n typeof SetSubaccountMemberMfaRequirementInputSchema\n>;\n\nexport const ListSubaccountInvitesInputSchema = v.strictObject({\n direction: v.optional(v.picklist([\"incoming\", \"outgoing\", \"\"]), \"\"),\n});\n\nexport type ListSubaccountInvitesInput = v.InferInput<typeof ListSubaccountInvitesInputSchema>;\n\nconst InviteActionSchema = v.picklist([\"accept\", \"decline\", \"cancel\"]);\n\nconst InviteStatusSchema = v.picklist([\"pending\", \"accepted\", \"declined\", \"cancelled\"]);\n\nexport type SubaccountInviteStatus = v.InferOutput<typeof InviteStatusSchema>;\n\nconst ProtoInviteStatusSchema = v.enum(Proto.SubaccountInviteStatus);\n\nexport const RespondSubaccountInviteInputSchema = v.strictObject({\n inviteId: idInputSchema(\"inviteId\"),\n action: v.pipe(\n InviteActionSchema,\n v.transform((v) => InviteActionCodec.inputToProto[v]),\n ),\n});\n\nexport type RespondSubaccountInviteInput = v.InferInput<typeof RespondSubaccountInviteInputSchema>;\n\nconst ProtoSubaccountStatusSchema = v.pipe(\n v.picklist(SUBACCOUNT_STATUS_VALUES),\n v.transform((status) => SubaccountStatusCodec.protoToOutput[status]),\n);\n\nexport type SubaccountStatus = v.InferOutput<typeof ProtoSubaccountStatusSchema>;\n\nexport const SubaccountSchema = v.pipe(\n v.object({\n id: PublicIdSchema,\n role: ProtoSubaccountRoleSchema,\n label: v.optional(v.string(), \"\"),\n icon: v.optional(v.string(), \"\"),\n color: v.optional(v.string(), \"\"),\n status: ProtoSubaccountStatusSchema,\n smartAccountAddress: v.string(),\n smartAccountSaltNonce: v.optional(v.number()),\n ownerUsername: v.optional(v.string(), \"\"),\n ownerAvatarUrl: v.optional(v.string(), \"\"),\n ownerRootSmartAccountAddress: v.string(),\n subaccountPolicyId: PublicIdSchema,\n requireMemberMfa: v.optional(v.boolean(), false),\n updatedAt: v.optional(TimestampSchema),\n revision: BigIntStringSchema,\n }),\n v.transform(({ updatedAt, ...subaccount }) => ({\n ...subaccount,\n updatedAt: tsObjToMs(updatedAt),\n updatedAtNs: tsObjToNsString(updatedAt),\n })),\n);\n\nexport type Subaccount = v.InferOutput<typeof SubaccountSchema>;\n\nexport const SubaccountMemberSchema = v.object({\n accountId: PublicIdSchema,\n role: ProtoSubaccountRoleSchema,\n username: v.optional(v.string(), \"\"),\n smartAccountAddress: v.string(),\n avatarUrl: v.optional(v.string(), \"\"),\n mfaEnrolled: v.optional(v.boolean(), false),\n});\n\nexport type SubaccountMember = v.InferOutput<typeof SubaccountMemberSchema>;\n\nexport const SubaccountInviteSchema = v.pipe(\n v.object({\n id: PublicIdSchema,\n subaccountId: PublicIdSchema,\n granteeAccountId: PublicIdSchema,\n inviterAccountId: PublicIdSchema,\n role: ProtoSubaccountRoleSchema,\n status: v.pipe(\n ProtoInviteStatusSchema,\n v.transform((v) =>\n requiredEnumLabel(\n InviteStatusCodec.protoToOutput,\n v,\n \"SubaccountInviteSchema\",\n \"status\",\n ),\n ),\n ),\n createdAt: OptionalTimestampMsSchema,\n respondedAt: OptionalTimestampMsSchema,\n granteeUsername: v.optional(v.string(), \"\"),\n inviterUsername: v.optional(v.string(), \"\"),\n subaccountLabel: v.optional(v.string(), \"\"),\n inviterRootSmartAccountAddress: v.string(),\n granteeRootSmartAccountAddress: v.string(),\n requireMemberMfa: v.boolean(),\n }),\n v.transform(\n ({\n subaccountLabel,\n subaccountId,\n inviterRootSmartAccountAddress,\n granteeRootSmartAccountAddress,\n ...rest\n }) => ({\n ...rest,\n subaccountId,\n subaccountLabel,\n inviterSmartAccountAddress: inviterRootSmartAccountAddress,\n granteeSmartAccountAddress: granteeRootSmartAccountAddress,\n }),\n ),\n);\n\nexport type SubaccountInvite = v.InferOutput<typeof SubaccountInviteSchema>;\n\nexport const SubaccountActivityInputSchema = v.strictObject({\n subaccountId: idInputSchema(\"subaccountId\"),\n limit: v.optional(v.pipe(v.number(), v.integer(), v.minValue(0), v.maxValue(200)), 50),\n pageToken: v.optional(v.pipe(v.string(), v.trim()), \"\"),\n});\n\nexport type SubaccountActivityInput = v.InferInput<typeof SubaccountActivityInputSchema>;\n\nexport const SubaccountActivityEventSchema = v.object({\n createdAt: OptionalTimestampMsSchema,\n entityKind: v.pipe(\n v.enum(Proto.ActivityEntityKind),\n v.transform((value) =>\n requiredEnumLabel(\n ActivityEntityKindCodec.protoToOutput,\n value,\n \"SubaccountActivityEventSchema\",\n \"entity kind\",\n ),\n ),\n ),\n eventAction: v.pipe(\n v.enum(Proto.ActivityEventAction),\n v.transform((value) =>\n requiredEnumLabel(\n ActivityEventActionCodec.protoToOutput,\n value,\n \"SubaccountActivityEventSchema\",\n \"event action\",\n ),\n ),\n ),\n source: v.pipe(\n v.enum(Proto.ActivityEventSource),\n v.transform((value) =>\n requiredEnumLabel(\n ActivityEventSourceCodec.protoToOutput,\n value,\n \"SubaccountActivityEventSchema\",\n \"source\",\n ),\n ),\n ),\n ip: v.optional(v.string()),\n userAgent: v.optional(v.string()),\n actorAccountId: PublicIdSchema,\n payloadJson: v.pipe(\n v.string(),\n v.transform((v) => JSON.parse(v)),\n ),\n});\n\nexport type SubaccountEvent = v.InferOutput<typeof SubaccountActivityEventSchema>;\n"],"mappings":";;;;;;;;;AAoCA,MAAa,uBAAuB,EAAE,SAAS;CAR3C;CACA;CACA;CACA;CACA;CACA;AAG2C,CAAsB;AAIrE,MAAM,4BAA4B,EAAE,KAChC,EAAE,KAAKA,cAAoB,GAC3B,EAAE,WAAW,SACT,kBAAkB,oBAAoB,eAAe,MAAM,wBAAwB,MAAM,CAC7F,CACJ;AAEA,MAAM,kCAAkC,EAAE,KACtC,EAAE,KAAKC,oBAA0B,GACjC,EAAE,WAAW,eACT,kBACI,0BAA0B,eAC1B,YACA,8BACA,YACJ,CACJ,CACJ;AAIA,MAAa,uCAAuC,EAAE,OAAO;CACzD,YAAY;CACZ,aAAa,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;CACtC,aAAa,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;CACtC,cAAc,EAAE,KACZ,EAAE,KAAKC,YAA0B,GACjC,EAAE,WAAW,WACT,kBACI,kBAAkB,eAClB,QACA,wCACA,eACJ,CACJ,CACJ;AACJ,CAAC;AAMD,MAAa,iCAAiC,EAAE,OAAO;CACnD,MAAM;CACN,aAAa,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;CACtC,aAAa,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;CACtC,YAAY,EAAE,SAAS,EAAE,QAAQ,GAAG,KAAK;CACzC,aAAa,EAAE,SAAS,EAAE,MAAM,+BAA+B,GAAG,CAAC,CAAC;AACxE,CAAC;AAID,MAAa,8BAA8B,EAAE,OAAO;CAChD,aAAa,EAAE,SAAS,EAAE,MAAM,oCAAoC,GAAG,CAAC,CAAC;CACzE,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,GAAG,CAAC,CAAC;AACjE,CAAC;AAID,MAAa,uCAAuC,EAAE,OAAO;CACzD,MAAM;CACN,aAAa,EAAE,SAAS,EAAE,MAAM,+BAA+B,GAAG,CAAC,CAAC;CACpE,oBAAoB;AACxB,CAAC;AAMD,MAAa,8BAA8B,EAAE,aAAa;CACtD,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;CAChC,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;CAC/B,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;CAChC,qBAAqB,EAAE,OAAO;CAC9B,OAAO,EAAE,OAAO;CAChB,WAAW,EAAE,OAAO;CACpB,sBAAsB,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;CAC/C,gBAAgB,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;AAC7C,CAAC;AAID,MAAa,0BAA0B,EAAE,aAAa,EAClD,cAAc,cAAc,cAAc,EAC9C,CAAC;AAID,MAAa,+BAA+B,EAAE,OAAO;CACjD,cAAc;CACd,cAAc,EAAE,OAAO;CACvB,uBAAuB,EAAE,OAAO;CAChC,UAAU;AACd,CAAC;AAID,MAAa,iCAAiC,EAAE,OAAO,CAAC,CAAC;AAWzD,MAAM,0BAA0B,uBAAwC,CAAC,CAAC;CACtE,OAAO;EAAE,MAAM;EAAS,SAAS,WAAW,EAAE,MAAM;CAAG;CACvD,MAAM;EAAE,MAAM;EAAQ,SAAS,UAAU,EAAE,KAAK;CAAG;CACnD,OAAO;EAAE,MAAM;EAAS,SAAS,WAAW,EAAE,MAAM;CAAG;CACvD,QAAQ;EACJ,MAAM;EACN,SAAS,YAAY,EAAE,QAAQ,sBAAsB,aAAa,QAAQ;CAC9E;AACJ,CAAC;AAED,MAAa,8BAA8B,EAAE,KACzC,EAAE,aAAa;CACX,cAAc,cAAc,cAAc;CAC1C,kBAAkB,gCAAgC,kBAAkB;CACpE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC;CAC5B,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;CAC3B,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC;CAC5B,QAAQ,EAAE,SAAS,EAAE,SAAS,wBAAwB,CAAC;AAC3D,CAAC,GACD,EAAE,OACG,EAAE,OAAO,MAAM,OAAO,aACnB,UAAU,KAAA,KACV,SAAS,KAAA,KACT,UAAU,KAAA,KACV,WAAW,KAAA,GACf,gDACJ,GACA,EAAE,WAAW,EAAE,cAAc,kBAAkB,GAAG,YAAY;CAC1D,MAAM,EAAE,OAAO,YAAY,eAAe,gBAAgB,OAAO,uBAAuB;CACxF,OAAO;EACH;EACA;EACA;EACA;CACJ;AACJ,CAAC,CACL;AAIA,MAAa,oCAAoC,EAAE,aAAa;CAC5D,cAAc,cAAc,cAAc;CAC1C,kBAAkB,cAAc,kBAAkB;CAClD,MAAM,EAAE,KACJ,sBACA,EAAE,WAAW,SAAS,oBAAoB,aAAa,KAAK,CAChE;AACJ,CAAC;AAID,MAAa,oCAAoC,EAAE,aAAa;CAC5D,cAAc,cAAc,cAAc;CAC1C,kBAAkB,cAAc,kBAAkB;AACtD,CAAC;AAID,MAAa,wCAAwC;AAMrD,MAAa,+CAA+C,EAAE,aAAa;CACvE,cAAc,cAAc,cAAc;CAC1C,kBAAkB,EAAE,QAAQ;AAChC,CAAC;AAMD,MAAa,mCAAmC,EAAE,aAAa,EAC3D,WAAW,EAAE,SAAS,EAAE,SAAS;CAAC;CAAY;CAAY;AAAE,CAAC,GAAG,EAAE,EACtE,CAAC;AAID,MAAM,qBAAqB,EAAE,SAAS;CAAC;CAAU;CAAW;AAAQ,CAAC;AAE1C,EAAE,SAAS;CAAC;CAAW;CAAY;CAAY;AAAW,CAAC;AAItF,MAAM,0BAA0B,EAAE,KAAKC,sBAA4B;AAEnE,MAAa,qCAAqC,EAAE,aAAa;CAC7D,UAAU,cAAc,UAAU;CAClC,QAAQ,EAAE,KACN,oBACA,EAAE,WAAW,MAAM,kBAAkB,aAAa,EAAE,CACxD;AACJ,CAAC;AAID,MAAM,8BAA8B,EAAE,KAClC,EAAE,SAAS,wBAAwB,GACnC,EAAE,WAAW,WAAW,sBAAsB,cAAc,OAAO,CACvE;AAIA,MAAa,mBAAmB,EAAE,KAC9B,EAAE,OAAO;CACL,IAAI;CACJ,MAAM;CACN,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;CAChC,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;CAC/B,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;CAChC,QAAQ;CACR,qBAAqB,EAAE,OAAO;CAC9B,uBAAuB,EAAE,SAAS,EAAE,OAAO,CAAC;CAC5C,eAAe,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;CACxC,gBAAgB,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;CACzC,8BAA8B,EAAE,OAAO;CACvC,oBAAoB;CACpB,kBAAkB,EAAE,SAAS,EAAE,QAAQ,GAAG,KAAK;CAC/C,WAAW,EAAE,SAAS,eAAe;CACrC,UAAU;AACd,CAAC,GACD,EAAE,WAAW,EAAE,WAAW,GAAG,kBAAkB;CAC3C,GAAG;CACH,WAAW,UAAU,SAAS;CAC9B,aAAa,gBAAgB,SAAS;AAC1C,EAAE,CACN;AAIA,MAAa,yBAAyB,EAAE,OAAO;CAC3C,WAAW;CACX,MAAM;CACN,UAAU,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;CACnC,qBAAqB,EAAE,OAAO;CAC9B,WAAW,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;CACpC,aAAa,EAAE,SAAS,EAAE,QAAQ,GAAG,KAAK;AAC9C,CAAC;AAID,MAAa,yBAAyB,EAAE,KACpC,EAAE,OAAO;CACL,IAAI;CACJ,cAAc;CACd,kBAAkB;CAClB,kBAAkB;CAClB,MAAM;CACN,QAAQ,EAAE,KACN,yBACA,EAAE,WAAW,MACT,kBACI,kBAAkB,eAClB,GACA,0BACA,QACJ,CACJ,CACJ;CACA,WAAW;CACX,aAAa;CACb,iBAAiB,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;CAC1C,iBAAiB,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;CAC1C,iBAAiB,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;CAC1C,gCAAgC,EAAE,OAAO;CACzC,gCAAgC,EAAE,OAAO;CACzC,kBAAkB,EAAE,QAAQ;AAChC,CAAC,GACD,EAAE,WACG,EACG,iBACA,cACA,gCACA,gCACA,GAAG,YACA;CACH,GAAG;CACH;CACA;CACA,4BAA4B;CAC5B,4BAA4B;AAChC,EACJ,CACJ;AAIA,MAAa,gCAAgC,EAAE,aAAa;CACxD,cAAc,cAAc,cAAc;CAC1C,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,QAAQ,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,SAAS,GAAG,CAAC,GAAG,EAAE;CACrF,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE;AAC1D,CAAC;AAID,MAAa,gCAAgC,EAAE,OAAO;CAClD,WAAW;CACX,YAAY,EAAE,KACV,EAAE,KAAKC,kBAAwB,GAC/B,EAAE,WAAW,UACT,kBACI,wBAAwB,eACxB,OACA,iCACA,aACJ,CACJ,CACJ;CACA,aAAa,EAAE,KACX,EAAE,KAAKC,mBAAyB,GAChC,EAAE,WAAW,UACT,kBACI,yBAAyB,eACzB,OACA,iCACA,cACJ,CACJ,CACJ;CACA,QAAQ,EAAE,KACN,EAAE,KAAKC,mBAAyB,GAChC,EAAE,WAAW,UACT,kBACI,yBAAyB,eACzB,OACA,iCACA,QACJ,CACJ,CACJ;CACA,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC;CACzB,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC;CAChC,gBAAgB;CAChB,aAAa,EAAE,KACX,EAAE,OAAO,GACT,EAAE,WAAW,MAAM,KAAK,MAAM,CAAC,CAAC,CACpC;AACJ,CAAC"}
|
|
@@ -6,6 +6,7 @@ declare const LedgerTransferSideSchema: v.ObjectSchema<{
|
|
|
6
6
|
readonly kind: v.SchemaWithPipe<readonly [v.EnumSchema<typeof TransferSideKind, undefined>, v.TransformAction<TransferSideKind, "unspecified" | "funding_account" | "trading_account" | "external_address" | "private_counterparty" | "fee_account" | "system_account">]>;
|
|
7
7
|
readonly accountId: v.SchemaWithPipe<readonly [v.OptionalSchema<v.BigintSchema<undefined>, undefined>, v.TransformAction<bigint | undefined, string | undefined>]>;
|
|
8
8
|
readonly address: v.OptionalSchema<v.StringSchema<undefined>, "">;
|
|
9
|
+
readonly chainId: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
|
|
9
10
|
}, undefined>;
|
|
10
11
|
type LedgerTransferSide = v.InferOutput<typeof LedgerTransferSideSchema>;
|
|
11
12
|
/** Parses ledger transfer rows whose monetary fields use the protocol's fixed E18 scale. */
|
|
@@ -29,11 +30,13 @@ declare const LedgerTransferSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
|
29
30
|
readonly kind: v.SchemaWithPipe<readonly [v.EnumSchema<typeof TransferSideKind, undefined>, v.TransformAction<TransferSideKind, "unspecified" | "funding_account" | "trading_account" | "external_address" | "private_counterparty" | "fee_account" | "system_account">]>;
|
|
30
31
|
readonly accountId: v.SchemaWithPipe<readonly [v.OptionalSchema<v.BigintSchema<undefined>, undefined>, v.TransformAction<bigint | undefined, string | undefined>]>;
|
|
31
32
|
readonly address: v.OptionalSchema<v.StringSchema<undefined>, "">;
|
|
33
|
+
readonly chainId: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
|
|
32
34
|
}, undefined>, undefined>;
|
|
33
35
|
readonly destination: v.OptionalSchema<v.ObjectSchema<{
|
|
34
36
|
readonly kind: v.SchemaWithPipe<readonly [v.EnumSchema<typeof TransferSideKind, undefined>, v.TransformAction<TransferSideKind, "unspecified" | "funding_account" | "trading_account" | "external_address" | "private_counterparty" | "fee_account" | "system_account">]>;
|
|
35
37
|
readonly accountId: v.SchemaWithPipe<readonly [v.OptionalSchema<v.BigintSchema<undefined>, undefined>, v.TransformAction<bigint | undefined, string | undefined>]>;
|
|
36
38
|
readonly address: v.OptionalSchema<v.StringSchema<undefined>, "">;
|
|
39
|
+
readonly chainId: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
|
|
37
40
|
}, undefined>, undefined>;
|
|
38
41
|
}, undefined>, v.TransformAction<{
|
|
39
42
|
assetId: number;
|
|
@@ -55,22 +58,26 @@ declare const LedgerTransferSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
|
55
58
|
kind: "unspecified" | "funding_account" | "trading_account" | "external_address" | "private_counterparty" | "fee_account" | "system_account";
|
|
56
59
|
accountId?: string | undefined;
|
|
57
60
|
address: string;
|
|
61
|
+
chainId?: number | undefined;
|
|
58
62
|
} | undefined;
|
|
59
63
|
destination?: {
|
|
60
64
|
kind: "unspecified" | "funding_account" | "trading_account" | "external_address" | "private_counterparty" | "fee_account" | "system_account";
|
|
61
65
|
accountId?: string | undefined;
|
|
62
66
|
address: string;
|
|
67
|
+
chainId?: number | undefined;
|
|
63
68
|
} | undefined;
|
|
64
69
|
}, {
|
|
65
70
|
destination?: {
|
|
66
71
|
kind: "unspecified" | "funding_account" | "trading_account" | "external_address" | "private_counterparty" | "fee_account" | "system_account";
|
|
67
72
|
accountId?: string | undefined;
|
|
68
73
|
address: string;
|
|
74
|
+
chainId?: number | undefined;
|
|
69
75
|
} | undefined;
|
|
70
76
|
source?: {
|
|
71
77
|
kind: "unspecified" | "funding_account" | "trading_account" | "external_address" | "private_counterparty" | "fee_account" | "system_account";
|
|
72
78
|
accountId?: string | undefined;
|
|
73
79
|
address: string;
|
|
80
|
+
chainId?: number | undefined;
|
|
74
81
|
} | undefined;
|
|
75
82
|
assetId: number;
|
|
76
83
|
amount: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfers.schemas.d.ts","names":[],"sources":["../../../src/services/transfers/transfers.schemas.ts"],"mappings":";;;;cA2Ca,0BAAwB,EAAA
|
|
1
|
+
{"version":3,"file":"transfers.schemas.d.ts","names":[],"sources":["../../../src/services/transfers/transfers.schemas.ts"],"mappings":";;;;cA2Ca,0BAAwB,EAAA;;;;;;KAOzB,qBAAqB,EAAE,mBAAmB;;cAGzC,sBAAoB,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAmDrB,iBAAiB,EAAE,mBAAmB;cAErC,0BAAwB,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwBzB,qBAAqB,EAAE,kBAAkB"}
|
|
@@ -22,7 +22,8 @@ const TransferSideKindSchema = v.pipe(v.enum(TransferSideKind), v.transform((kin
|
|
|
22
22
|
const LedgerTransferSideSchema = v.object({
|
|
23
23
|
kind: TransferSideKindSchema,
|
|
24
24
|
accountId: OptionalPublicIdSchema,
|
|
25
|
-
address: v.optional(v.string(), "")
|
|
25
|
+
address: v.optional(v.string(), ""),
|
|
26
|
+
chainId: v.optional(v.number())
|
|
26
27
|
});
|
|
27
28
|
/** Parses ledger transfer rows whose monetary fields use the protocol's fixed E18 scale. */
|
|
28
29
|
const LedgerTransferSchema = v.pipe(v.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfers.schemas.js","names":["Proto.TransferSideKind"],"sources":["../../../src/services/transfers/transfers.schemas.ts"],"sourcesContent":["import * as v from \"valibot\";\nimport * as Proto from \"../../gen/ledger/read/v1/ledger_read_pb.js\";\nimport { fromU128 } from \"../../utils/u128.js\";\nimport {\n AccountCodeCodec,\n TRANSFER_CODE_VALUES,\n TransferCodeCodec,\n} from \"../../shared/ledger-codes.js\";\nimport { requiredEnumLabel } from \"../../shared/proto-enum-codec.js\";\nimport { wireTimestampToMs } from \"../../utils/time.js\";\nimport {\n OptionalPublicIdSchema,\n OptionalTimestampMsToUsInputSchema,\n} from \"../../shared/schemas.js\";\nimport {\n AccountScopeInputEntries,\n accountScopeToSubaccountId,\n} from \"../../shared/account-scope.js\";\nimport { E18_SCALE, scaledToDecimalOutput } from \"../../shared/decimal-surface.js\";\nimport { TransferSideKindCodec } from \"./transfers.codecs.js\";\n\nconst U128Schema = v.object({\n hi: v.bigint(),\n lo: v.bigint(),\n});\n\nconst WireTimestampInputSchema = v.union([\n v.bigint(),\n v.number(),\n v.pipe(\n v.string(),\n v.regex(/^\\d+$/),\n v.transform((value) => BigInt(value)),\n ),\n]);\n\nconst TransferSideKindSchema = v.pipe(\n v.enum(Proto.TransferSideKind),\n v.transform((kind) =>\n requiredEnumLabel(TransferSideKindCodec.protoToOutput, kind, \"TransferSideSchema\", \"kind\"),\n ),\n);\n\nexport const LedgerTransferSideSchema = v.object({\n kind: TransferSideKindSchema,\n accountId: OptionalPublicIdSchema,\n address: v.optional(v.string(), \"\"),\n});\n\nexport type LedgerTransferSide = v.InferOutput<typeof LedgerTransferSideSchema>;\n\n/** Parses ledger transfer rows whose monetary fields use the protocol's fixed E18 scale. */\nexport const LedgerTransferSchema = v.pipe(\n v.object({\n assetId: v.number(),\n amountE18: v.optional(U128Schema),\n balanceAfterE18: v.optional(U128Schema),\n isDebit: v.boolean(),\n transferCode: v.number(),\n accountCode: v.number(),\n tsUs: WireTimestampInputSchema,\n linkId: v.optional(v.bigint()),\n flowId: v.optional(v.string()),\n source: v.optional(LedgerTransferSideSchema),\n destination: v.optional(LedgerTransferSideSchema),\n }),\n v.transform((tr) => {\n const amount = fromU128(tr.amountE18);\n const linkId = tr.linkId && tr.linkId > 0n ? tr.linkId.toString() : undefined;\n\n const output = {\n assetId: tr.assetId,\n amount: scaledToDecimalOutput(amount, E18_SCALE),\n balanceAfter:\n tr.balanceAfterE18 !== undefined\n ? scaledToDecimalOutput(fromU128(tr.balanceAfterE18), E18_SCALE)\n : undefined,\n type: requiredEnumLabel(\n TransferCodeCodec.protoToOutput,\n tr.transferCode,\n \"LedgerTransferSchema\",\n \"transfer code\",\n ),\n accountCode: requiredEnumLabel(\n AccountCodeCodec.protoToOutput,\n tr.accountCode,\n \"LedgerTransferSchema\",\n \"account code\",\n ),\n timestamp: wireTimestampToMs(tr.tsUs),\n isDebit: tr.isDebit,\n linkId,\n flowId: tr.flowId?.trim() ?? \"\",\n };\n\n return {\n ...output,\n ...(tr.source ? { source: tr.source } : {}),\n ...(tr.destination ? { destination: tr.destination } : {}),\n };\n }),\n);\n\nexport type LedgerTransfer = v.InferOutput<typeof LedgerTransferSchema>;\n\nexport const ListTransfersInputSchema = v.pipe(\n v.strictObject({\n ...AccountScopeInputEntries,\n ledger: v.optional(v.number(), 0),\n limit: v.optional(v.number()),\n reversed: v.optional(v.boolean(), false),\n timestampMin: OptionalTimestampMsToUsInputSchema,\n timestampMax: OptionalTimestampMsToUsInputSchema,\n transferCode: v.optional(\n v.pipe(\n v.picklist(TRANSFER_CODE_VALUES),\n v.transform((value) => TransferCodeCodec.inputToProto[value]),\n ),\n ),\n pageToken: v.optional(v.pipe(v.string(), v.trim()), \"\"),\n }),\n v.transform(({ account, timestampMin, timestampMax, ...input }) => ({\n ...input,\n tsMinUs: timestampMin,\n tsMaxUs: timestampMax,\n subaccountId: accountScopeToSubaccountId(account),\n })),\n);\n\nexport type ListTransfersInput = v.InferInput<typeof ListTransfersInputSchema>;\n"],"mappings":";;;;;;;;;;;AAqBA,MAAM,aAAa,EAAE,OAAO;CACxB,IAAI,EAAE,OAAO;CACb,IAAI,EAAE,OAAO;AACjB,CAAC;AAED,MAAM,2BAA2B,EAAE,MAAM;CACrC,EAAE,OAAO;CACT,EAAE,OAAO;CACT,EAAE,KACE,EAAE,OAAO,GACT,EAAE,MAAM,OAAO,GACf,EAAE,WAAW,UAAU,OAAO,KAAK,CAAC,CACxC;AACJ,CAAC;AAED,MAAM,yBAAyB,EAAE,KAC7B,EAAE,KAAKA,gBAAsB,GAC7B,EAAE,WAAW,SACT,kBAAkB,sBAAsB,eAAe,MAAM,sBAAsB,MAAM,CAC7F,CACJ;AAEA,MAAa,2BAA2B,EAAE,OAAO;CAC7C,MAAM;CACN,WAAW;CACX,SAAS,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;
|
|
1
|
+
{"version":3,"file":"transfers.schemas.js","names":["Proto.TransferSideKind"],"sources":["../../../src/services/transfers/transfers.schemas.ts"],"sourcesContent":["import * as v from \"valibot\";\nimport * as Proto from \"../../gen/ledger/read/v1/ledger_read_pb.js\";\nimport { fromU128 } from \"../../utils/u128.js\";\nimport {\n AccountCodeCodec,\n TRANSFER_CODE_VALUES,\n TransferCodeCodec,\n} from \"../../shared/ledger-codes.js\";\nimport { requiredEnumLabel } from \"../../shared/proto-enum-codec.js\";\nimport { wireTimestampToMs } from \"../../utils/time.js\";\nimport {\n OptionalPublicIdSchema,\n OptionalTimestampMsToUsInputSchema,\n} from \"../../shared/schemas.js\";\nimport {\n AccountScopeInputEntries,\n accountScopeToSubaccountId,\n} from \"../../shared/account-scope.js\";\nimport { E18_SCALE, scaledToDecimalOutput } from \"../../shared/decimal-surface.js\";\nimport { TransferSideKindCodec } from \"./transfers.codecs.js\";\n\nconst U128Schema = v.object({\n hi: v.bigint(),\n lo: v.bigint(),\n});\n\nconst WireTimestampInputSchema = v.union([\n v.bigint(),\n v.number(),\n v.pipe(\n v.string(),\n v.regex(/^\\d+$/),\n v.transform((value) => BigInt(value)),\n ),\n]);\n\nconst TransferSideKindSchema = v.pipe(\n v.enum(Proto.TransferSideKind),\n v.transform((kind) =>\n requiredEnumLabel(TransferSideKindCodec.protoToOutput, kind, \"TransferSideSchema\", \"kind\"),\n ),\n);\n\nexport const LedgerTransferSideSchema = v.object({\n kind: TransferSideKindSchema,\n accountId: OptionalPublicIdSchema,\n address: v.optional(v.string(), \"\"),\n chainId: v.optional(v.number()),\n});\n\nexport type LedgerTransferSide = v.InferOutput<typeof LedgerTransferSideSchema>;\n\n/** Parses ledger transfer rows whose monetary fields use the protocol's fixed E18 scale. */\nexport const LedgerTransferSchema = v.pipe(\n v.object({\n assetId: v.number(),\n amountE18: v.optional(U128Schema),\n balanceAfterE18: v.optional(U128Schema),\n isDebit: v.boolean(),\n transferCode: v.number(),\n accountCode: v.number(),\n tsUs: WireTimestampInputSchema,\n linkId: v.optional(v.bigint()),\n flowId: v.optional(v.string()),\n source: v.optional(LedgerTransferSideSchema),\n destination: v.optional(LedgerTransferSideSchema),\n }),\n v.transform((tr) => {\n const amount = fromU128(tr.amountE18);\n const linkId = tr.linkId && tr.linkId > 0n ? tr.linkId.toString() : undefined;\n\n const output = {\n assetId: tr.assetId,\n amount: scaledToDecimalOutput(amount, E18_SCALE),\n balanceAfter:\n tr.balanceAfterE18 !== undefined\n ? scaledToDecimalOutput(fromU128(tr.balanceAfterE18), E18_SCALE)\n : undefined,\n type: requiredEnumLabel(\n TransferCodeCodec.protoToOutput,\n tr.transferCode,\n \"LedgerTransferSchema\",\n \"transfer code\",\n ),\n accountCode: requiredEnumLabel(\n AccountCodeCodec.protoToOutput,\n tr.accountCode,\n \"LedgerTransferSchema\",\n \"account code\",\n ),\n timestamp: wireTimestampToMs(tr.tsUs),\n isDebit: tr.isDebit,\n linkId,\n flowId: tr.flowId?.trim() ?? \"\",\n };\n\n return {\n ...output,\n ...(tr.source ? { source: tr.source } : {}),\n ...(tr.destination ? { destination: tr.destination } : {}),\n };\n }),\n);\n\nexport type LedgerTransfer = v.InferOutput<typeof LedgerTransferSchema>;\n\nexport const ListTransfersInputSchema = v.pipe(\n v.strictObject({\n ...AccountScopeInputEntries,\n ledger: v.optional(v.number(), 0),\n limit: v.optional(v.number()),\n reversed: v.optional(v.boolean(), false),\n timestampMin: OptionalTimestampMsToUsInputSchema,\n timestampMax: OptionalTimestampMsToUsInputSchema,\n transferCode: v.optional(\n v.pipe(\n v.picklist(TRANSFER_CODE_VALUES),\n v.transform((value) => TransferCodeCodec.inputToProto[value]),\n ),\n ),\n pageToken: v.optional(v.pipe(v.string(), v.trim()), \"\"),\n }),\n v.transform(({ account, timestampMin, timestampMax, ...input }) => ({\n ...input,\n tsMinUs: timestampMin,\n tsMaxUs: timestampMax,\n subaccountId: accountScopeToSubaccountId(account),\n })),\n);\n\nexport type ListTransfersInput = v.InferInput<typeof ListTransfersInputSchema>;\n"],"mappings":";;;;;;;;;;;AAqBA,MAAM,aAAa,EAAE,OAAO;CACxB,IAAI,EAAE,OAAO;CACb,IAAI,EAAE,OAAO;AACjB,CAAC;AAED,MAAM,2BAA2B,EAAE,MAAM;CACrC,EAAE,OAAO;CACT,EAAE,OAAO;CACT,EAAE,KACE,EAAE,OAAO,GACT,EAAE,MAAM,OAAO,GACf,EAAE,WAAW,UAAU,OAAO,KAAK,CAAC,CACxC;AACJ,CAAC;AAED,MAAM,yBAAyB,EAAE,KAC7B,EAAE,KAAKA,gBAAsB,GAC7B,EAAE,WAAW,SACT,kBAAkB,sBAAsB,eAAe,MAAM,sBAAsB,MAAM,CAC7F,CACJ;AAEA,MAAa,2BAA2B,EAAE,OAAO;CAC7C,MAAM;CACN,WAAW;CACX,SAAS,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;CAClC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC;AAClC,CAAC;;AAKD,MAAa,uBAAuB,EAAE,KAClC,EAAE,OAAO;CACL,SAAS,EAAE,OAAO;CAClB,WAAW,EAAE,SAAS,UAAU;CAChC,iBAAiB,EAAE,SAAS,UAAU;CACtC,SAAS,EAAE,QAAQ;CACnB,cAAc,EAAE,OAAO;CACvB,aAAa,EAAE,OAAO;CACtB,MAAM;CACN,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC;CAC7B,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC;CAC7B,QAAQ,EAAE,SAAS,wBAAwB;CAC3C,aAAa,EAAE,SAAS,wBAAwB;AACpD,CAAC,GACD,EAAE,WAAW,OAAO;CAChB,MAAM,SAAS,SAAS,GAAG,SAAS;CACpC,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,KAAK,GAAG,OAAO,SAAS,IAAI,KAAA;CA2BpE,OAAO;EAxBH,SAAS,GAAG;EACZ,QAAQ,sBAAsB,QAAA,EAAiB;EAC/C,cACI,GAAG,oBAAoB,KAAA,IACjB,sBAAsB,SAAS,GAAG,eAAe,GAAA,EAAY,IAC7D,KAAA;EACV,MAAM,kBACF,kBAAkB,eAClB,GAAG,cACH,wBACA,eACJ;EACA,aAAa,kBACT,iBAAiB,eACjB,GAAG,aACH,wBACA,cACJ;EACA,WAAW,kBAAkB,GAAG,IAAI;EACpC,SAAS,GAAG;EACZ;EACA,QAAQ,GAAG,QAAQ,KAAK,KAAK;EAK7B,GAAI,GAAG,SAAS,EAAE,QAAQ,GAAG,OAAO,IAAI,CAAC;EACzC,GAAI,GAAG,cAAc,EAAE,aAAa,GAAG,YAAY,IAAI,CAAC;CAC5D;AACJ,CAAC,CACL;AAIA,MAAa,2BAA2B,EAAE,KACtC,EAAE,aAAa;CACX,GAAG;CACH,QAAQ,EAAE,SAAS,EAAE,OAAO,GAAG,CAAC;CAChC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC;CAC5B,UAAU,EAAE,SAAS,EAAE,QAAQ,GAAG,KAAK;CACvC,cAAc;CACd,cAAc;CACd,cAAc,EAAE,SACZ,EAAE,KACE,EAAE,SAAS,oBAAoB,GAC/B,EAAE,WAAW,UAAU,kBAAkB,aAAa,MAAM,CAChE,CACJ;CACA,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE;AAC1D,CAAC,GACD,EAAE,WAAW,EAAE,SAAS,cAAc,cAAc,GAAG,aAAa;CAChE,GAAG;CACH,SAAS;CACT,SAAS;CACT,cAAc,2BAA2B,OAAO;AACpD,EAAE,CACN"}
|
package/package.json
CHANGED