@polyester/sdk 0.9.1 → 0.11.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.
Files changed (170) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/catalogs/readers.d.ts.map +1 -1
  3. package/dist/catalogs/readers.js +22 -0
  4. package/dist/catalogs/readers.js.map +1 -1
  5. package/dist/core-client.d.ts.map +1 -1
  6. package/dist/core-client.js +49 -15
  7. package/dist/core-client.js.map +1 -1
  8. package/dist/environment.d.ts.map +1 -1
  9. package/dist/environment.js +3 -2
  10. package/dist/environment.js.map +1 -1
  11. package/dist/gen/auth/v1/api_keys_pb.d.ts +8 -7
  12. package/dist/gen/auth/v1/api_keys_pb.d.ts.map +1 -1
  13. package/dist/gen/auth/v1/api_keys_pb.js.map +1 -1
  14. package/dist/gen/auth/v1/policies_pb.d.ts +8 -4
  15. package/dist/gen/auth/v1/policies_pb.d.ts.map +1 -1
  16. package/dist/gen/auth/v1/policies_pb.js.map +1 -1
  17. package/dist/gen/auth/v1/subaccounts_pb.d.ts +382 -18
  18. package/dist/gen/auth/v1/subaccounts_pb.d.ts.map +1 -1
  19. package/dist/gen/auth/v1/subaccounts_pb.js +253 -38
  20. package/dist/gen/auth/v1/subaccounts_pb.js.map +1 -1
  21. package/dist/gen/orders/v1/orders_pb.d.ts +2 -2
  22. package/dist/gen/orders/v1/orders_pb.js.map +1 -1
  23. package/dist/gen/orders/v1/orders_read_pb.d.ts +8 -0
  24. package/dist/gen/orders/v1/orders_read_pb.d.ts.map +1 -1
  25. package/dist/gen/orders/v1/orders_read_pb.js +1 -1
  26. package/dist/gen/orders/v1/orders_read_pb.js.map +1 -1
  27. package/dist/gen/ratelimit/v1/ratelimit_pb.d.ts +2 -2
  28. package/dist/gen/ratelimit/v1/ratelimit_pb.js +1 -1
  29. package/dist/gen/ratelimit/v1/ratelimit_pb.js.map +1 -1
  30. package/dist/gen/triggers/v1/triggers_pb.d.ts +4 -4
  31. package/dist/gen/triggers/v1/triggers_pb.js.map +1 -1
  32. package/dist/index.d.ts +2 -2
  33. package/dist/realtime/client.d.ts.map +1 -1
  34. package/dist/realtime/client.js +13 -5
  35. package/dist/realtime/client.js.map +1 -1
  36. package/dist/realtime/ready-gated-subscription.js +68 -0
  37. package/dist/realtime/ready-gated-subscription.js.map +1 -0
  38. package/dist/realtime/snapshot-then-stream.js +19 -10
  39. package/dist/realtime/snapshot-then-stream.js.map +1 -1
  40. package/dist/server-client.d.ts +3 -1
  41. package/dist/server-client.d.ts.map +1 -1
  42. package/dist/server-client.js +9 -4
  43. package/dist/server-client.js.map +1 -1
  44. package/dist/services/auth/session.d.ts.map +1 -1
  45. package/dist/services/auth/session.js +4 -1
  46. package/dist/services/auth/session.js.map +1 -1
  47. package/dist/services/auth/token-storage.js +2 -2
  48. package/dist/services/auth/token-storage.js.map +1 -1
  49. package/dist/services/balances/balances.js +5 -8
  50. package/dist/services/balances/balances.js.map +1 -1
  51. package/dist/services/candles/candles.js +9 -12
  52. package/dist/services/candles/candles.js.map +1 -1
  53. package/dist/services/heatmap/heatmap.js +5 -8
  54. package/dist/services/heatmap/heatmap.js.map +1 -1
  55. package/dist/services/lifecycle/lifecycle.schemas.js +1 -1
  56. package/dist/services/market-data/market-data.d.ts.map +1 -1
  57. package/dist/services/market-data/market-data.js +5 -8
  58. package/dist/services/market-data/market-data.js.map +1 -1
  59. package/dist/services/market-data/market-data.schemas.d.ts.map +1 -1
  60. package/dist/services/market-data/market-data.schemas.js +3 -2
  61. package/dist/services/market-data/market-data.schemas.js.map +1 -1
  62. package/dist/services/market-overview/market-overview.d.ts.map +1 -1
  63. package/dist/services/market-overview/market-overview.js +7 -13
  64. package/dist/services/market-overview/market-overview.js.map +1 -1
  65. package/dist/services/orderbook/orderbook.d.ts.map +1 -1
  66. package/dist/services/orderbook/orderbook.js +18 -11
  67. package/dist/services/orderbook/orderbook.js.map +1 -1
  68. package/dist/services/orders/orders-batch.schemas.d.ts +6 -22
  69. package/dist/services/orders/orders-batch.schemas.d.ts.map +1 -1
  70. package/dist/services/orders/orders-batch.schemas.js +23 -20
  71. package/dist/services/orders/orders-batch.schemas.js.map +1 -1
  72. package/dist/services/orders/orders-identifiers.schemas.js +6 -1
  73. package/dist/services/orders/orders-identifiers.schemas.js.map +1 -1
  74. package/dist/services/orders/orders-input.schemas.d.ts +11 -43
  75. package/dist/services/orders/orders-input.schemas.d.ts.map +1 -1
  76. package/dist/services/orders/orders-input.schemas.js +10 -11
  77. package/dist/services/orders/orders-input.schemas.js.map +1 -1
  78. package/dist/services/orders/orders-modify.schemas.d.ts +1 -25
  79. package/dist/services/orders/orders-modify.schemas.d.ts.map +1 -1
  80. package/dist/services/orders/orders-modify.schemas.js +2 -4
  81. package/dist/services/orders/orders-modify.schemas.js.map +1 -1
  82. package/dist/services/orders/orders-output.schemas.d.ts +165 -27
  83. package/dist/services/orders/orders-output.schemas.d.ts.map +1 -1
  84. package/dist/services/orders/orders-output.schemas.js +1 -1
  85. package/dist/services/orders/orders-output.schemas.js.map +1 -1
  86. package/dist/services/orders/orders-risk.schemas.d.ts +1 -20
  87. package/dist/services/orders/orders-risk.schemas.d.ts.map +1 -1
  88. package/dist/services/orders/orders-risk.schemas.js +52 -15
  89. package/dist/services/orders/orders-risk.schemas.js.map +1 -1
  90. package/dist/services/orders/orders.codecs.js +12 -1
  91. package/dist/services/orders/orders.codecs.js.map +1 -1
  92. package/dist/services/orders/orders.d.ts.map +1 -1
  93. package/dist/services/orders/orders.js +6 -9
  94. package/dist/services/orders/orders.js.map +1 -1
  95. package/dist/services/rate-limits/rate-limits.schemas.d.ts +4 -4
  96. package/dist/services/rate-limits/rate-limits.schemas.js +1 -1
  97. package/dist/services/rate-limits/rate-limits.schemas.js.map +1 -1
  98. package/dist/services/subaccounts/index.d.ts +2 -2
  99. package/dist/services/subaccounts/subaccounts.codecs.js +29 -1
  100. package/dist/services/subaccounts/subaccounts.codecs.js.map +1 -1
  101. package/dist/services/subaccounts/subaccounts.d.ts +9 -1
  102. package/dist/services/subaccounts/subaccounts.d.ts.map +1 -1
  103. package/dist/services/subaccounts/subaccounts.js +19 -2
  104. package/dist/services/subaccounts/subaccounts.js.map +1 -1
  105. package/dist/services/subaccounts/subaccounts.schemas.d.ts +46 -6
  106. package/dist/services/subaccounts/subaccounts.schemas.d.ts.map +1 -1
  107. package/dist/services/subaccounts/subaccounts.schemas.js +28 -3
  108. package/dist/services/subaccounts/subaccounts.schemas.js.map +1 -1
  109. package/dist/services/subaccounts/subaccounts.types.d.ts +2 -2
  110. package/dist/services/trades/trades.d.ts +1 -1
  111. package/dist/services/trades/trades.js +6 -9
  112. package/dist/services/trades/trades.js.map +1 -1
  113. package/dist/services/trades/trades.schemas.d.ts +3 -0
  114. package/dist/services/trades/trades.schemas.d.ts.map +1 -1
  115. package/dist/services/trades/trades.schemas.js +2 -1
  116. package/dist/services/trades/trades.schemas.js.map +1 -1
  117. package/dist/services/trailing-oneof-inputs.js +3 -3
  118. package/dist/services/trailing-oneof-inputs.js.map +1 -1
  119. package/dist/services/transfers/index.d.ts +2 -2
  120. package/dist/services/transfers/transfers.d.ts +1 -2
  121. package/dist/services/transfers/transfers.d.ts.map +1 -1
  122. package/dist/services/transfers/transfers.js +8 -13
  123. package/dist/services/transfers/transfers.js.map +1 -1
  124. package/dist/services/transfers/transfers.schemas.d.ts +5 -5
  125. package/dist/services/transfers/transfers.schemas.d.ts.map +1 -1
  126. package/dist/services/transfers/transfers.schemas.js +31 -33
  127. package/dist/services/transfers/transfers.schemas.js.map +1 -1
  128. package/dist/services/triggers/trigger-input.schemas.d.ts +22 -9
  129. package/dist/services/triggers/trigger-input.schemas.d.ts.map +1 -1
  130. package/dist/services/triggers/trigger-input.schemas.js +20 -43
  131. package/dist/services/triggers/trigger-input.schemas.js.map +1 -1
  132. package/dist/services/triggers/triggers-output.schemas.d.ts +14 -14
  133. package/dist/services/triggers/triggers-output.schemas.js +5 -5
  134. package/dist/services/triggers/triggers-output.schemas.js.map +1 -1
  135. package/dist/services/triggers/triggers.d.ts.map +1 -1
  136. package/dist/services/triggers/triggers.js +10 -23
  137. package/dist/services/triggers/triggers.js.map +1 -1
  138. package/dist/services/zipper/zipper.d.ts.map +1 -1
  139. package/dist/services/zipper/zipper.js +15 -18
  140. package/dist/services/zipper/zipper.js.map +1 -1
  141. package/dist/shared/connect-error-mapping.d.ts.map +1 -1
  142. package/dist/shared/connect-error-mapping.js +9 -2
  143. package/dist/shared/connect-error-mapping.js.map +1 -1
  144. package/dist/shared/decimal-surface.d.ts.map +1 -1
  145. package/dist/shared/decimal-surface.js +40 -17
  146. package/dist/shared/decimal-surface.js.map +1 -1
  147. package/dist/shared/transports.d.ts.map +1 -1
  148. package/dist/shared/transports.js +33 -11
  149. package/dist/shared/transports.js.map +1 -1
  150. package/dist/utils/base58-id.js +1 -2
  151. package/dist/utils/base58-id.js.map +1 -1
  152. package/dist/utils/errors.d.ts.map +1 -1
  153. package/dist/utils/errors.js +4 -3
  154. package/dist/utils/errors.js.map +1 -1
  155. package/dist/utils/event-emitter.d.ts.map +1 -1
  156. package/dist/utils/event-emitter.js +6 -3
  157. package/dist/utils/event-emitter.js.map +1 -1
  158. package/dist/utils/jwt.d.ts.map +1 -1
  159. package/dist/utils/jwt.js +2 -2
  160. package/dist/utils/jwt.js.map +1 -1
  161. package/dist/utils/numbers.js +20 -3
  162. package/dist/utils/numbers.js.map +1 -1
  163. package/dist/utils/timestamp.js +27 -16
  164. package/dist/utils/timestamp.js.map +1 -1
  165. package/dist/utils/u128.js +6 -18
  166. package/dist/utils/u128.js.map +1 -1
  167. package/dist/wired-services.d.ts.map +1 -1
  168. package/dist/wired-services.js +2 -1
  169. package/dist/wired-services.js.map +1 -1
  170. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"environment.js","names":[],"sources":["../src/environment.ts"],"sourcesContent":["import type { SafeVersion } from \"permissionless/accounts\";\nimport { ConfigurationError } from \"./shared/errors.js\";\nimport type { Address, Chain } from \"viem\";\nimport { checksumEvmAddress, evmUtf8ToBytes, isEvmAddress, keccak256Hex } from \"./utils/evm.js\";\n\nexport interface PolyesterEntryPointConfig {\n readonly address: Address;\n readonly version: \"0.7\";\n}\n\nexport interface PolyesterSafeDeploymentConfig {\n readonly version: SafeVersion;\n readonly safeModuleSetupAddress: Address;\n readonly safe4337ModuleAddress: Address;\n readonly safeProxyFactoryAddress: Address;\n readonly safeSingletonAddress: Address;\n readonly multiSendAddress: Address;\n readonly multiSendCallOnlyAddress?: Address;\n}\n\nexport interface PolyesterAccountAbstractionEnvironment {\n readonly bundlerUrl: string;\n readonly paymasterUrl: string;\n readonly entryPoint: PolyesterEntryPointConfig;\n readonly safe: PolyesterSafeDeploymentConfig;\n}\n\nexport interface PolyesterContractsEnvironment {\n readonly tradingGatewayAddress: Address;\n}\n\nexport interface PolyesterEnvironment {\n readonly name: string;\n readonly fingerprint: string;\n readonly apiUrl: string;\n readonly websocketUrl: string;\n readonly rpcUrl: string;\n readonly chain: Chain;\n readonly accountAbstraction: PolyesterAccountAbstractionEnvironment;\n readonly contracts: PolyesterContractsEnvironment;\n}\n\nexport interface CreatePolyesterEnvironmentParams {\n readonly name: string;\n readonly apiUrl: string;\n readonly websocketUrl: string;\n readonly rpcUrl: string;\n readonly chain: Chain;\n readonly accountAbstraction: {\n readonly bundlerUrl: string;\n readonly paymasterUrl: string;\n readonly entryPoint: PolyesterEntryPointConfig;\n readonly safe: PolyesterSafeDeploymentConfig;\n };\n readonly contracts: PolyesterContractsEnvironment;\n}\n\nconst LOCAL_HOSTS = new Set([\"localhost\", \"127.0.0.1\", \"::1\", \"[::1]\"]);\n\nfunction requireObject(value: unknown, label: string): asserts value is Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new ConfigurationError(`${label} must be an object.`);\n }\n}\n\nfunction requireNonEmptyString(value: unknown, label: string): asserts value is string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new ConfigurationError(`${label} must be a non-empty string.`);\n }\n}\n\nfunction isLocalHost(hostname: string): boolean {\n return LOCAL_HOSTS.has(hostname);\n}\n\nfunction normalizeUrl(value: string, label: string, allowedProtocols: readonly string[]): string {\n let url: URL;\n try {\n url = new URL(value);\n } catch {\n throw new ConfigurationError(`${label} must be a valid URL.`);\n }\n\n if (!allowedProtocols.includes(url.protocol)) {\n throw new ConfigurationError(`${label} must use ${allowedProtocols.join(\" or \")}.`);\n }\n\n const insecureRemote =\n (url.protocol === \"http:\" || url.protocol === \"ws:\") && !isLocalHost(url.hostname);\n if (insecureRemote) {\n throw new ConfigurationError(`${label} must use a secure protocol for remote hosts.`);\n }\n\n url.hash = \"\";\n return url.toString().replace(/\\/+$/u, \"\");\n}\n\nfunction normalizeAddress(value: Address, label: string): Address {\n if (!isEvmAddress(value)) {\n throw new ConfigurationError(`${label} must be a valid address.`);\n }\n return checksumEvmAddress(value);\n}\n\nfunction normalizeEntryPoint(entryPoint: PolyesterEntryPointConfig): PolyesterEntryPointConfig {\n requireObject(entryPoint, \"accountAbstraction.entryPoint\");\n if (entryPoint.version !== \"0.7\") {\n throw new ConfigurationError(\"accountAbstraction.entryPoint.version must be 0.7.\");\n }\n return Object.freeze({\n address: normalizeAddress(entryPoint.address, \"accountAbstraction.entryPoint.address\"),\n version: entryPoint.version,\n });\n}\n\nfunction normalizeSafeConfig(safe: PolyesterSafeDeploymentConfig): PolyesterSafeDeploymentConfig {\n requireObject(safe, \"accountAbstraction.safe\");\n if (safe.version !== \"1.4.1\" && safe.version !== \"1.5.0\") {\n throw new ConfigurationError(\n 'accountAbstraction.safe.version must be either \"1.4.1\" or \"1.5.0\".',\n );\n }\n return Object.freeze({\n version: safe.version,\n safeModuleSetupAddress: normalizeAddress(\n safe.safeModuleSetupAddress,\n \"accountAbstraction.safe.safeModuleSetupAddress\",\n ),\n safe4337ModuleAddress: normalizeAddress(\n safe.safe4337ModuleAddress,\n \"accountAbstraction.safe.safe4337ModuleAddress\",\n ),\n safeProxyFactoryAddress: normalizeAddress(\n safe.safeProxyFactoryAddress,\n \"accountAbstraction.safe.safeProxyFactoryAddress\",\n ),\n safeSingletonAddress: normalizeAddress(\n safe.safeSingletonAddress,\n \"accountAbstraction.safe.safeSingletonAddress\",\n ),\n multiSendAddress: normalizeAddress(\n safe.multiSendAddress,\n \"accountAbstraction.safe.multiSendAddress\",\n ),\n multiSendCallOnlyAddress: safe.multiSendCallOnlyAddress\n ? normalizeAddress(\n safe.multiSendCallOnlyAddress,\n \"accountAbstraction.safe.multiSendCallOnlyAddress\",\n )\n : undefined,\n });\n}\n\nfunction normalizeChain(chain: Chain, rpcUrl: string): Chain {\n requireObject(chain, \"chain\");\n if (!Number.isInteger(chain.id) || chain.id <= 0) {\n throw new ConfigurationError(\"chain.id must be a positive integer.\");\n }\n requireNonEmptyString(chain.name, \"chain.name\");\n requireObject(chain.nativeCurrency, \"chain.nativeCurrency\");\n if (!Number.isInteger(chain.nativeCurrency.decimals) || chain.nativeCurrency.decimals < 0) {\n throw new ConfigurationError(\n \"chain.nativeCurrency.decimals must be a non-negative integer.\",\n );\n }\n requireNonEmptyString(chain.nativeCurrency.name, \"chain.nativeCurrency.name\");\n requireNonEmptyString(chain.nativeCurrency.symbol, \"chain.nativeCurrency.symbol\");\n requireObject(chain.rpcUrls, \"chain.rpcUrls\");\n requireObject(chain.rpcUrls.default, \"chain.rpcUrls.default\");\n if (!Array.isArray(chain.rpcUrls.default.http)) {\n throw new ConfigurationError(\"chain.rpcUrls.default.http must be an array.\");\n }\n\n // Shape parity with viem's defineChain: spread over undefined defaults.\n return Object.freeze({\n formatters: undefined,\n fees: undefined,\n serializers: undefined,\n ...chain,\n rpcUrls: {\n ...chain.rpcUrls,\n default: {\n ...chain.rpcUrls.default,\n http: [rpcUrl],\n },\n },\n });\n}\n\nfunction environmentFingerprint(input: {\n apiUrl: string;\n websocketUrl: string;\n rpcUrl: string;\n chainId: number;\n accountAbstraction: PolyesterAccountAbstractionEnvironment;\n contracts: PolyesterContractsEnvironment;\n}): string {\n return keccak256Hex(\n evmUtf8ToBytes(\n JSON.stringify({\n apiUrl: input.apiUrl,\n websocketUrl: input.websocketUrl,\n rpcUrl: input.rpcUrl,\n chainId: input.chainId,\n bundlerUrl: input.accountAbstraction.bundlerUrl,\n paymasterUrl: input.accountAbstraction.paymasterUrl,\n entryPoint: input.accountAbstraction.entryPoint,\n safe: input.accountAbstraction.safe,\n contracts: input.contracts,\n }),\n ),\n );\n}\n\n/**\n * Creates a complete SDK environment configuration from entrypoint and contract settings.\n */\nexport function createPolyesterEnvironment(\n params: CreatePolyesterEnvironmentParams,\n): PolyesterEnvironment {\n requireObject(params, \"Environment configuration\");\n requireNonEmptyString(params.name, \"name\");\n requireObject(params.accountAbstraction, \"accountAbstraction\");\n requireObject(params.contracts, \"contracts\");\n const apiUrl = normalizeUrl(params.apiUrl, \"apiUrl\", [\"https:\", \"http:\"]);\n const websocketUrl = normalizeUrl(params.websocketUrl, \"websocketUrl\", [\"wss:\", \"ws:\"]);\n const rpcUrl = normalizeUrl(params.rpcUrl, \"rpcUrl\", [\"https:\", \"http:\"]);\n const bundlerUrl = normalizeUrl(params.accountAbstraction.bundlerUrl, \"bundlerUrl\", [\n \"https:\",\n \"http:\",\n ]);\n const paymasterUrl = normalizeUrl(params.accountAbstraction.paymasterUrl, \"paymasterUrl\", [\n \"https:\",\n \"http:\",\n ]);\n const chain = normalizeChain(params.chain, rpcUrl);\n const accountAbstraction = Object.freeze({\n bundlerUrl,\n paymasterUrl,\n entryPoint: normalizeEntryPoint(params.accountAbstraction.entryPoint),\n safe: normalizeSafeConfig(params.accountAbstraction.safe),\n });\n const contracts = Object.freeze({\n tradingGatewayAddress: normalizeAddress(\n params.contracts.tradingGatewayAddress,\n \"contracts.tradingGatewayAddress\",\n ),\n });\n const fingerprint = environmentFingerprint({\n apiUrl,\n websocketUrl,\n rpcUrl,\n chainId: chain.id,\n accountAbstraction,\n contracts,\n });\n\n return Object.freeze({\n name: params.name,\n fingerprint,\n apiUrl,\n websocketUrl,\n rpcUrl,\n chain,\n accountAbstraction,\n contracts,\n });\n}\n\n/**\n * Parses a complete environment supplied to a public SDK client constructor.\n */\nexport function parsePolyesterEnvironment(environment: PolyesterEnvironment): PolyesterEnvironment {\n requireObject(environment, \"environment\");\n const parsed = createPolyesterEnvironment(environment);\n if (environment.fingerprint !== parsed.fingerprint) {\n throw new ConfigurationError(\n \"environment.fingerprint must match the environment configuration.\",\n );\n }\n return parsed;\n}\n\nexport const POLYESTER_TESTNET_ENVIRONMENT = createPolyesterEnvironment({\n name: \"polyester-testnet\",\n apiUrl: \"https://api-devnet.polyester.ai\",\n websocketUrl: \"wss://api-devnet.polyester.ai\",\n rpcUrl: \"https://rpc.polyester.tech\",\n chain: {\n id: 888168,\n name: \"Polyester Chain Testnet\",\n nativeCurrency: {\n decimals: 18,\n name: \"POL\",\n symbol: \"POL\",\n },\n rpcUrls: {\n default: {\n http: [\"https://rpc.polyester.tech\"],\n },\n },\n blockExplorers: {\n default: {\n name: \"Polyester Scan\",\n url: \"https://polyesterscan.com\",\n },\n },\n contracts: {\n multicall3: {\n address: \"0xF35A6AE5408fa1356064849D0BC3855f801aa6aC\",\n blockCreated: 563457,\n },\n },\n },\n accountAbstraction: {\n bundlerUrl: \"https://bundler.polyester.tech\",\n paymasterUrl: \"https://paymaster.polyester.tech\",\n entryPoint: {\n address: \"0x59a4B77766509c4507D79eFF8089474eC3daC174\",\n version: \"0.7\",\n },\n safe: {\n version: \"1.4.1\",\n safeModuleSetupAddress: \"0x80791683D9C079A37Debc67EaDdbFcBC6f0FF2bB\",\n safe4337ModuleAddress: \"0x0713FF3d4c1b4f177833a372b1e3cb977540EA11\",\n safeProxyFactoryAddress: \"0xF8F0F649Dd3bFa9095206691E9fb2356c26216dE\",\n safeSingletonAddress: \"0x92abEa238FEA8908c397cE65366ea9278f0AeC7A\",\n multiSendAddress: \"0x70C8a8CcB45a8E2589B0f019374fc923dA34E4c7\",\n multiSendCallOnlyAddress: \"0x375C86a08DA98d1944D7B3c736307A72186CcAf1\",\n },\n },\n contracts: {\n tradingGatewayAddress: \"0xD3fecf5D39131e23b6B0f872cA0a21c8A5a30932\",\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"environment.js","names":[],"sources":["../src/environment.ts"],"sourcesContent":["import type { SafeVersion } from \"permissionless/accounts\";\nimport { ConfigurationError } from \"./shared/errors.js\";\nimport type { Address, Chain } from \"viem\";\nimport { checksumEvmAddress, evmUtf8ToBytes, isEvmAddress, keccak256Hex } from \"./utils/evm.js\";\n\nexport interface PolyesterEntryPointConfig {\n readonly address: Address;\n readonly version: \"0.7\";\n}\n\nexport interface PolyesterSafeDeploymentConfig {\n readonly version: SafeVersion;\n readonly safeModuleSetupAddress: Address;\n readonly safe4337ModuleAddress: Address;\n readonly safeProxyFactoryAddress: Address;\n readonly safeSingletonAddress: Address;\n readonly multiSendAddress: Address;\n readonly multiSendCallOnlyAddress?: Address;\n}\n\nexport interface PolyesterAccountAbstractionEnvironment {\n readonly bundlerUrl: string;\n readonly paymasterUrl: string;\n readonly entryPoint: PolyesterEntryPointConfig;\n readonly safe: PolyesterSafeDeploymentConfig;\n}\n\nexport interface PolyesterContractsEnvironment {\n readonly tradingGatewayAddress: Address;\n}\n\nexport interface PolyesterEnvironment {\n readonly name: string;\n readonly fingerprint: string;\n readonly apiUrl: string;\n readonly websocketUrl: string;\n readonly rpcUrl: string;\n readonly chain: Chain;\n readonly accountAbstraction: PolyesterAccountAbstractionEnvironment;\n readonly contracts: PolyesterContractsEnvironment;\n}\n\nexport interface CreatePolyesterEnvironmentParams {\n readonly name: string;\n readonly apiUrl: string;\n readonly websocketUrl: string;\n readonly rpcUrl: string;\n readonly chain: Chain;\n readonly accountAbstraction: {\n readonly bundlerUrl: string;\n readonly paymasterUrl: string;\n readonly entryPoint: PolyesterEntryPointConfig;\n readonly safe: PolyesterSafeDeploymentConfig;\n };\n readonly contracts: PolyesterContractsEnvironment;\n}\n\nconst LOCAL_HOSTS = new Set([\"localhost\", \"127.0.0.1\", \"::1\", \"[::1]\"]);\n\nfunction requireObject(value: unknown, label: string): asserts value is Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new ConfigurationError(`${label} must be an object.`);\n }\n}\n\nfunction requireNonEmptyString(value: unknown, label: string): asserts value is string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new ConfigurationError(`${label} must be a non-empty string.`);\n }\n}\n\nfunction isLocalHost(hostname: string): boolean {\n return LOCAL_HOSTS.has(hostname);\n}\n\nfunction normalizeUrl(\n value: string,\n label: string,\n allowedProtocols: readonly string[],\n options?: { allowSearch?: boolean },\n): string {\n let url: URL;\n try {\n url = new URL(value);\n } catch {\n throw new ConfigurationError(`${label} must be a valid URL.`);\n }\n\n if (!allowedProtocols.includes(url.protocol)) {\n throw new ConfigurationError(`${label} must use ${allowedProtocols.join(\" or \")}.`);\n }\n\n const insecureRemote =\n (url.protocol === \"http:\" || url.protocol === \"ws:\") && !isLocalHost(url.hostname);\n if (insecureRemote) {\n throw new ConfigurationError(`${label} must use a secure protocol for remote hosts.`);\n }\n\n if (options?.allowSearch === false && url.search) {\n throw new ConfigurationError(`${label} must not include query parameters.`);\n }\n\n url.hash = \"\";\n return url.toString().replace(/\\/+$/u, \"\");\n}\n\nfunction normalizeAddress(value: Address, label: string): Address {\n if (!isEvmAddress(value)) {\n throw new ConfigurationError(`${label} must be a valid address.`);\n }\n return checksumEvmAddress(value);\n}\n\nfunction normalizeEntryPoint(entryPoint: PolyesterEntryPointConfig): PolyesterEntryPointConfig {\n requireObject(entryPoint, \"accountAbstraction.entryPoint\");\n if (entryPoint.version !== \"0.7\") {\n throw new ConfigurationError(\"accountAbstraction.entryPoint.version must be 0.7.\");\n }\n return Object.freeze({\n address: normalizeAddress(entryPoint.address, \"accountAbstraction.entryPoint.address\"),\n version: entryPoint.version,\n });\n}\n\nfunction normalizeSafeConfig(safe: PolyesterSafeDeploymentConfig): PolyesterSafeDeploymentConfig {\n requireObject(safe, \"accountAbstraction.safe\");\n if (safe.version !== \"1.4.1\" && safe.version !== \"1.5.0\") {\n throw new ConfigurationError(\n 'accountAbstraction.safe.version must be either \"1.4.1\" or \"1.5.0\".',\n );\n }\n return Object.freeze({\n version: safe.version,\n safeModuleSetupAddress: normalizeAddress(\n safe.safeModuleSetupAddress,\n \"accountAbstraction.safe.safeModuleSetupAddress\",\n ),\n safe4337ModuleAddress: normalizeAddress(\n safe.safe4337ModuleAddress,\n \"accountAbstraction.safe.safe4337ModuleAddress\",\n ),\n safeProxyFactoryAddress: normalizeAddress(\n safe.safeProxyFactoryAddress,\n \"accountAbstraction.safe.safeProxyFactoryAddress\",\n ),\n safeSingletonAddress: normalizeAddress(\n safe.safeSingletonAddress,\n \"accountAbstraction.safe.safeSingletonAddress\",\n ),\n multiSendAddress: normalizeAddress(\n safe.multiSendAddress,\n \"accountAbstraction.safe.multiSendAddress\",\n ),\n multiSendCallOnlyAddress: safe.multiSendCallOnlyAddress\n ? normalizeAddress(\n safe.multiSendCallOnlyAddress,\n \"accountAbstraction.safe.multiSendCallOnlyAddress\",\n )\n : undefined,\n });\n}\n\nfunction normalizeChain(chain: Chain, rpcUrl: string): Chain {\n requireObject(chain, \"chain\");\n if (!Number.isInteger(chain.id) || chain.id <= 0) {\n throw new ConfigurationError(\"chain.id must be a positive integer.\");\n }\n requireNonEmptyString(chain.name, \"chain.name\");\n requireObject(chain.nativeCurrency, \"chain.nativeCurrency\");\n if (!Number.isInteger(chain.nativeCurrency.decimals) || chain.nativeCurrency.decimals < 0) {\n throw new ConfigurationError(\n \"chain.nativeCurrency.decimals must be a non-negative integer.\",\n );\n }\n requireNonEmptyString(chain.nativeCurrency.name, \"chain.nativeCurrency.name\");\n requireNonEmptyString(chain.nativeCurrency.symbol, \"chain.nativeCurrency.symbol\");\n requireObject(chain.rpcUrls, \"chain.rpcUrls\");\n requireObject(chain.rpcUrls.default, \"chain.rpcUrls.default\");\n if (!Array.isArray(chain.rpcUrls.default.http)) {\n throw new ConfigurationError(\"chain.rpcUrls.default.http must be an array.\");\n }\n\n // Shape parity with viem's defineChain: spread over undefined defaults.\n return Object.freeze({\n formatters: undefined,\n fees: undefined,\n serializers: undefined,\n ...chain,\n rpcUrls: {\n ...chain.rpcUrls,\n default: {\n ...chain.rpcUrls.default,\n http: [rpcUrl],\n },\n },\n });\n}\n\nfunction environmentFingerprint(input: {\n apiUrl: string;\n websocketUrl: string;\n rpcUrl: string;\n chainId: number;\n accountAbstraction: PolyesterAccountAbstractionEnvironment;\n contracts: PolyesterContractsEnvironment;\n}): string {\n return keccak256Hex(\n evmUtf8ToBytes(\n JSON.stringify({\n apiUrl: input.apiUrl,\n websocketUrl: input.websocketUrl,\n rpcUrl: input.rpcUrl,\n chainId: input.chainId,\n bundlerUrl: input.accountAbstraction.bundlerUrl,\n paymasterUrl: input.accountAbstraction.paymasterUrl,\n entryPoint: input.accountAbstraction.entryPoint,\n safe: input.accountAbstraction.safe,\n contracts: input.contracts,\n }),\n ),\n );\n}\n\n/**\n * Creates a complete SDK environment configuration from entrypoint and contract settings.\n */\nexport function createPolyesterEnvironment(\n params: CreatePolyesterEnvironmentParams,\n): PolyesterEnvironment {\n requireObject(params, \"Environment configuration\");\n requireNonEmptyString(params.name, \"name\");\n requireObject(params.accountAbstraction, \"accountAbstraction\");\n requireObject(params.contracts, \"contracts\");\n const apiUrl = normalizeUrl(params.apiUrl, \"apiUrl\", [\"https:\", \"http:\"], {\n allowSearch: false,\n });\n const websocketUrl = normalizeUrl(params.websocketUrl, \"websocketUrl\", [\"wss:\", \"ws:\"]);\n const rpcUrl = normalizeUrl(params.rpcUrl, \"rpcUrl\", [\"https:\", \"http:\"]);\n const bundlerUrl = normalizeUrl(params.accountAbstraction.bundlerUrl, \"bundlerUrl\", [\n \"https:\",\n \"http:\",\n ]);\n const paymasterUrl = normalizeUrl(params.accountAbstraction.paymasterUrl, \"paymasterUrl\", [\n \"https:\",\n \"http:\",\n ]);\n const chain = normalizeChain(params.chain, rpcUrl);\n const accountAbstraction = Object.freeze({\n bundlerUrl,\n paymasterUrl,\n entryPoint: normalizeEntryPoint(params.accountAbstraction.entryPoint),\n safe: normalizeSafeConfig(params.accountAbstraction.safe),\n });\n const contracts = Object.freeze({\n tradingGatewayAddress: normalizeAddress(\n params.contracts.tradingGatewayAddress,\n \"contracts.tradingGatewayAddress\",\n ),\n });\n const fingerprint = environmentFingerprint({\n apiUrl,\n websocketUrl,\n rpcUrl,\n chainId: chain.id,\n accountAbstraction,\n contracts,\n });\n\n return Object.freeze({\n name: params.name,\n fingerprint,\n apiUrl,\n websocketUrl,\n rpcUrl,\n chain,\n accountAbstraction,\n contracts,\n });\n}\n\n/**\n * Parses a complete environment supplied to a public SDK client constructor.\n */\nexport function parsePolyesterEnvironment(environment: PolyesterEnvironment): PolyesterEnvironment {\n requireObject(environment, \"environment\");\n const parsed = createPolyesterEnvironment(environment);\n if (environment.fingerprint !== parsed.fingerprint) {\n throw new ConfigurationError(\n \"environment.fingerprint must match the environment configuration.\",\n );\n }\n return parsed;\n}\n\nexport const POLYESTER_TESTNET_ENVIRONMENT = createPolyesterEnvironment({\n name: \"polyester-testnet\",\n apiUrl: \"https://api-devnet.polyester.ai\",\n websocketUrl: \"wss://api-devnet.polyester.ai\",\n rpcUrl: \"https://rpc.polyester.tech\",\n chain: {\n id: 888168,\n name: \"Polyester Chain Testnet\",\n nativeCurrency: {\n decimals: 18,\n name: \"POL\",\n symbol: \"POL\",\n },\n rpcUrls: {\n default: {\n http: [\"https://rpc.polyester.tech\"],\n },\n },\n blockExplorers: {\n default: {\n name: \"Polyester Scan\",\n url: \"https://polyesterscan.com\",\n },\n },\n contracts: {\n multicall3: {\n address: \"0xF35A6AE5408fa1356064849D0BC3855f801aa6aC\",\n blockCreated: 563457,\n },\n },\n },\n accountAbstraction: {\n bundlerUrl: \"https://bundler.polyester.tech\",\n paymasterUrl: \"https://paymaster.polyester.tech\",\n entryPoint: {\n address: \"0x59a4B77766509c4507D79eFF8089474eC3daC174\",\n version: \"0.7\",\n },\n safe: {\n version: \"1.4.1\",\n safeModuleSetupAddress: \"0x80791683D9C079A37Debc67EaDdbFcBC6f0FF2bB\",\n safe4337ModuleAddress: \"0x0713FF3d4c1b4f177833a372b1e3cb977540EA11\",\n safeProxyFactoryAddress: \"0xF8F0F649Dd3bFa9095206691E9fb2356c26216dE\",\n safeSingletonAddress: \"0x92abEa238FEA8908c397cE65366ea9278f0AeC7A\",\n multiSendAddress: \"0x70C8a8CcB45a8E2589B0f019374fc923dA34E4c7\",\n multiSendCallOnlyAddress: \"0x375C86a08DA98d1944D7B3c736307A72186CcAf1\",\n },\n },\n contracts: {\n tradingGatewayAddress: \"0xD3fecf5D39131e23b6B0f872cA0a21c8A5a30932\",\n },\n});\n"],"mappings":"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"}
@@ -191,14 +191,15 @@ type CreateApiKeyResponse = Message<"auth.v1.CreateApiKeyResponse"> & {
191
191
  */
192
192
  declare const CreateApiKeyResponseSchema: GenMessage<CreateApiKeyResponse>;
193
193
  /**
194
- * ListApiKeysRequest lists non-revoked API keys owned by the caller.
194
+ * ListApiKeysRequest lists non-revoked API keys visible to the caller.
195
195
  *
196
196
  * @generated from message auth.v1.ListApiKeysRequest
197
197
  */
198
198
  type ListApiKeysRequest = Message<"auth.v1.ListApiKeysRequest"> & {
199
199
  /**
200
- * Optional filter: only keys scoped to this sub-account (opaque ID). If unset,
201
- * all non-revoked keys owned by the caller are returned.
200
+ * Optional filter: only keys scoped to this sub-account (opaque ID). The
201
+ * caller must own or administer the sub-account. If unset, only non-revoked
202
+ * keys owned by the caller are returned.
202
203
  *
203
204
  * @generated from field: optional fixed64 subaccount_id = 1;
204
205
  */
@@ -258,7 +259,7 @@ type DeleteApiKeyResponse = Message<"auth.v1.DeleteApiKeyResponse"> & {};
258
259
  */
259
260
  declare const DeleteApiKeyResponseSchema: GenMessage<DeleteApiKeyResponse>;
260
261
  /**
261
- * GetApiKeyRequest returns a single API key owned by the caller's account.
262
+ * GetApiKeyRequest returns one API key visible to its owner or a sub-account admin.
262
263
  *
263
264
  * @generated from message auth.v1.GetApiKeyRequest
264
265
  */
@@ -277,7 +278,7 @@ type GetApiKeyRequest = Message<"auth.v1.GetApiKeyRequest"> & {
277
278
  */
278
279
  declare const GetApiKeyRequestSchema: GenMessage<GetApiKeyRequest>;
279
280
  /**
280
- * GetApiKeyResponse returns one API key owned by the caller.
281
+ * GetApiKeyResponse returns one API key visible to the caller.
281
282
  *
282
283
  * @generated from message auth.v1.GetApiKeyResponse
283
284
  */
@@ -450,7 +451,7 @@ declare const ApiKeyService: GenService<{
450
451
  output: typeof CreateApiKeyResponseSchema;
451
452
  };
452
453
  /**
453
- * List non-revoked API keys owned by the caller, newest first.
454
+ * List non-revoked API keys visible to the caller, newest first.
454
455
  *
455
456
  * @generated from rpc auth.v1.ApiKeyService.ListApiKeys
456
457
  */
@@ -460,7 +461,7 @@ declare const ApiKeyService: GenService<{
460
461
  output: typeof ListApiKeysResponseSchema;
461
462
  };
462
463
  /**
463
- * Get a single API key owned by the caller.
464
+ * Get a single API key owned by the caller or scoped to a sub-account the caller administers.
464
465
  *
465
466
  * @generated from rpc auth.v1.ApiKeyService.GetApiKey
466
467
  */
@@ -1 +1 @@
1
- {"version":3,"file":"api_keys_pb.d.ts","names":[],"sources":["../../../../src/gen/auth/v1/api_keys_pb.ts"],"mappings":";;;;;;;;;cAca,uBAAuB;;;;;;KAQxB,SAAS;;;;;;;EAOnB;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;;EAQA;;;;;;EAOA,QAAQ;;;;;;EAOR;;;;;;;EAQA;;;;;;EAOA,YAAY;;;;;;;EAQZ,aAAa;;;;;;;EAQb,kBAAkB;;;;;;;EAQlB,YAAY;;;;;;;EAQZ;;;;;;;;;EAUA,YAAY;;;;;;EAOZ;;;;;;cAOW,cAAc,WAAW;;;;;;;KAS1B,sBAAsB;;;;;;EAMhC;;;;;;;EAQA;;;;;;EAOA;;;;;;EAOA;;;;;;;EAQA;;;;;;;EAQA,kBAAkB;;;;;;cAOP,2BAA2B,WAAW;;;;;;KAQvC,uBAAuB;;;;;;EAMjC,SAAS;;;;;;cAOE,4BAA4B,WAAW;;;;;;KAQxC,qBAAqB;;;;;;;EAO/B;;;;;;cAOW,0BAA0B,WAAW;;;;;;KAQtC,sBAAsB;;;;;;EAMhC,SAAS;;;;;;cAOE,2BAA2B,WAAW;;;;;;KAQvC,sBAAsB;;;;;;;EAOhC;;;;;;cAOW,2BAA2B,WAAW;;;;;;KAQvC,uBAAuB;;;;;cAOtB,4BAA4B,WAAW;;;;;;KAQxC,mBAAmB;;;;;;;EAO7B;;;;;;cAOW,wBAAwB,WAAW;;;;;;KAQpC,oBAAoB;;;;;;EAM9B,SAAS;;;;;;cAOE,yBAAyB,WAAW;;;;;;KAQrC,mBAAmB;;;;;;EAM7B;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA,QAAQ;;;;;;EAOR;;;;;;EAOA,YAAY;;;;;;cAOD,wBAAwB,WAAW;;;;;;KAQpC,sBAAsB;;;;;;EAMhC;;;;;;EAOA,SAAS;;;;;;;EAQT,aAAa;;;;;;EAOb;;;;;;cAOW,2BAA2B,WAAW;;;;;;KAQvC,uBAAuB;;;;;;EAMjC,SAAS;;;;;;cAOE,4BAA4B,WAAW;;;;;;aAQxC;;;;;;EAMV;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;cAMW,oBAAoB,QAAQ;;;;;;cAQ5B,eAAe;;;;;;;EAO1B;IACE;IACA,cAAc;IACd,eAAe;;;;;;;EAOjB;IACE;IACA,cAAc;IACd,eAAe;;;;;;;EAOjB;IACE;IACA,cAAc;IACd,eAAe;;;;;;;EAOjB;IACE;IACA,cAAc;IACd,eAAe;;;;;;;;EAQjB;IACE;IACA,cAAc;IACd,eAAe"}
1
+ {"version":3,"file":"api_keys_pb.d.ts","names":[],"sources":["../../../../src/gen/auth/v1/api_keys_pb.ts"],"mappings":";;;;;;;;;cAca,uBAAuB;;;;;;KAQxB,SAAS;;;;;;;EAOnB;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;;EAQA;;;;;;EAOA,QAAQ;;;;;;EAOR;;;;;;;EAQA;;;;;;EAOA,YAAY;;;;;;;EAQZ,aAAa;;;;;;;EAQb,kBAAkB;;;;;;;EAQlB,YAAY;;;;;;;EAQZ;;;;;;;;;EAUA,YAAY;;;;;;EAOZ;;;;;;cAOW,cAAc,WAAW;;;;;;;KAS1B,sBAAsB;;;;;;EAMhC;;;;;;;EAQA;;;;;;EAOA;;;;;;EAOA;;;;;;;EAQA;;;;;;;EAQA,kBAAkB;;;;;;cAOP,2BAA2B,WAAW;;;;;;KAQvC,uBAAuB;;;;;;EAMjC,SAAS;;;;;;cAOE,4BAA4B,WAAW;;;;;;KAQxC,qBAAqB;;;;;;;;EAQ/B;;;;;;cAOW,0BAA0B,WAAW;;;;;;KAQtC,sBAAsB;;;;;;EAMhC,SAAS;;;;;;cAOE,2BAA2B,WAAW;;;;;;KAQvC,sBAAsB;;;;;;;EAOhC;;;;;;cAOW,2BAA2B,WAAW;;;;;;KAQvC,uBAAuB;;;;;cAOtB,4BAA4B,WAAW;;;;;;KAQxC,mBAAmB;;;;;;;EAO7B;;;;;;cAOW,wBAAwB,WAAW;;;;;;KAQpC,oBAAoB;;;;;;EAM9B,SAAS;;;;;;cAOE,yBAAyB,WAAW;;;;;;KAQrC,mBAAmB;;;;;;EAM7B;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA,QAAQ;;;;;;EAOR;;;;;;EAOA,YAAY;;;;;;cAOD,wBAAwB,WAAW;;;;;;KAQpC,sBAAsB;;;;;;EAMhC;;;;;;EAOA,SAAS;;;;;;;EAQT,aAAa;;;;;;EAOb;;;;;;cAOW,2BAA2B,WAAW;;;;;;KAQvC,uBAAuB;;;;;;EAMjC,SAAS;;;;;;cAOE,4BAA4B,WAAW;;;;;;aAQxC;;;;;;EAMV;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;cAMW,oBAAoB,QAAQ;;;;;;cAQ5B,eAAe;;;;;;;EAO1B;IACE;IACA,cAAc;IACd,eAAe;;;;;;;EAOjB;IACE;IACA,cAAc;IACd,eAAe;;;;;;;EAOjB;IACE;IACA,cAAc;IACd,eAAe;;;;;;;EAOjB;IACE;IACA,cAAc;IACd,eAAe;;;;;;;;EAQjB;IACE;IACA,cAAc;IACd,eAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"api_keys_pb.js","names":[],"sources":["../../../../src/gen/auth/v1/api_keys_pb.ts"],"sourcesContent":["// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file auth/v1/api_keys.proto (package auth.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 { FieldMask, Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_field_mask, file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_polyester_api_options } from \"../../polyester/api/options_pb.js\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file auth/v1/api_keys.proto.\n */\nexport const file_auth_v1_api_keys: GenFile = /*@__PURE__*/\n fileDesc(\"ChZhdXRoL3YxL2FwaV9rZXlzLnByb3RvEgdhdXRoLnYxIucDCgZBcGlLZXkSEAoGa2V5X2lkGAIgASgJQgASDQoFbGFiZWwYAyABKAkSDgoEaWNvbhgJIAEoCUIAEg8KBWNvbG9yGAogASgJQgASFgoMaXBfd2hpdGVsaXN0GAQgAygJQgASJQoGc3RhdHVzGAYgASgOMhUuYXV0aC52MS5BcGlLZXlTdGF0dXMSGgoNc3ViYWNjb3VudF9pZBgHIAEoBkgAiAEBEhYKCXBvbGljeV9pZBgIIAEoBkgBiAEBEi4KCmNyZWF0ZWRfYXQYFCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKDGxhc3RfdXNlZF9hdBgVIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoScHVibGljX2tleV9lZDI1NTE5GBYgASgMEi4KCmV4cGlyZXNfYXQYFyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhgKEGNyZWF0ZWRfYnlfYWN0b3IYGCABKAkSLgoKdXBkYXRlZF9hdBgZIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEAoIcmV2aXNpb24YGiABKARCEAoOX3N1YmFjY291bnRfaWRCDAoKX3BvbGljeV9pZCKrAQoTQ3JlYXRlQXBpS2V5UmVxdWVzdBIPCgVsYWJlbBgBIAEoCUIAEhoKDXN1YmFjY291bnRfaWQYAyABKAZIAIgBARIOCgRpY29uGAYgASgJQgASDwoFY29sb3IYByABKAlCABIWCgxpcF93aGl0ZWxpc3QYBCADKAlCABIcChJwdWJsaWNfa2V5X2VkMjU1MTkYBSABKAxCAEIQCg5fc3ViYWNjb3VudF9pZCI4ChRDcmVhdGVBcGlLZXlSZXNwb25zZRIgCgdhcGlfa2V5GAEgASgLMg8uYXV0aC52MS5BcGlLZXkiQgoSTGlzdEFwaUtleXNSZXF1ZXN0EhoKDXN1YmFjY291bnRfaWQYASABKAZIAIgBAUIQCg5fc3ViYWNjb3VudF9pZCI4ChNMaXN0QXBpS2V5c1Jlc3BvbnNlEiEKCGFwaV9rZXlzGAEgAygLMg8uYXV0aC52MS5BcGlLZXkiJwoTRGVsZXRlQXBpS2V5UmVxdWVzdBIQCgZrZXlfaWQYASABKAlCACIWChREZWxldGVBcGlLZXlSZXNwb25zZSIkChBHZXRBcGlLZXlSZXF1ZXN0EhAKBmtleV9pZBgBIAEoCUIAIjUKEUdldEFwaUtleVJlc3BvbnNlEiAKB2FwaV9rZXkYASABKAsyDy5hdXRoLnYxLkFwaUtleSK3AQoQQXBpS2V5VXBkYXRlU3BlYxIPCgVsYWJlbBgBIAEoCUIAEg4KBGljb24YAiABKAlCABIPCgVjb2xvchgDIAEoCUIAEicKBnN0YXR1cxgEIAEoDjIVLmF1dGgudjEuQXBpS2V5U3RhdHVzQgASFgoMaXBfd2hpdGVsaXN0GAUgAygJQgASLgoKZXhwaXJlc19hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXA6ACKlAQoTVXBkYXRlQXBpS2V5UmVxdWVzdBIQCgZrZXlfaWQYASABKAlCABIsCgdhcGlfa2V5GAIgASgLMhkuYXV0aC52MS5BcGlLZXlVcGRhdGVTcGVjQgASMQoLdXBkYXRlX21hc2sYAyABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQgASGwoRZXhwZWN0ZWRfcmV2aXNpb24YBCABKARCACI4ChRVcGRhdGVBcGlLZXlSZXNwb25zZRIgCgdhcGlfa2V5GAEgASgLMg8uYXV0aC52MS5BcGlLZXkqVQoMQXBpS2V5U3RhdHVzEh4KGkFQSV9LRVlfU1RBVFVTX1VOU1BFQ0lGSUVEEAASCgoGQUNUSVZFEAESCwoHUkVWT0tFRBACEgwKCERJU0FCTEVEEAMyjgMKDUFwaUtleVNlcnZpY2USTQoMQ3JlYXRlQXBpS2V5EhwuYXV0aC52MS5DcmVhdGVBcGlLZXlSZXF1ZXN0Gh0uYXV0aC52MS5DcmVhdGVBcGlLZXlSZXNwb25zZSIAEkoKC0xpc3RBcGlLZXlzEhsuYXV0aC52MS5MaXN0QXBpS2V5c1JlcXVlc3QaHC5hdXRoLnYxLkxpc3RBcGlLZXlzUmVzcG9uc2UiABJECglHZXRBcGlLZXkSGS5hdXRoLnYxLkdldEFwaUtleVJlcXVlc3QaGi5hdXRoLnYxLkdldEFwaUtleVJlc3BvbnNlIgASTQoMRGVsZXRlQXBpS2V5EhwuYXV0aC52MS5EZWxldGVBcGlLZXlSZXF1ZXN0Gh0uYXV0aC52MS5EZWxldGVBcGlLZXlSZXNwb25zZSIAEk0KDFVwZGF0ZUFwaUtleRIcLmF1dGgudjEuVXBkYXRlQXBpS2V5UmVxdWVzdBodLmF1dGgudjEuVXBkYXRlQXBpS2V5UmVzcG9uc2UiAEI8WjpnaXRodWIuY29tL0ZhYnJpYy1MYWJzL3BvbHllc3Rlci1zZGstZ28vZ2VuL2F1dGgvdjE7YXV0aHYxYgZwcm90bzM=\", [file_google_protobuf_field_mask, file_google_protobuf_timestamp, file_polyester_api_options]);\n\n/**\n * ApiKey is public API key metadata. It never includes the private key or seed.\n *\n * @generated from message auth.v1.ApiKey\n */\nexport type ApiKey = Message<\"auth.v1.ApiKey\"> & {\n /**\n * Stable opaque identifier used to refer to this key, formatted as \"ak_\"\n * followed by 32 lowercase hex characters.\n *\n * @generated from field: string key_id = 2;\n */\n keyId: string;\n\n /**\n * Human-readable label for the key. Maximum length is 64 characters.\n *\n * @generated from field: string label = 3;\n */\n label: string;\n\n /**\n * Optional user-chosen icon/emoji for UI display.\n *\n * @generated from field: string icon = 9;\n */\n icon: string;\n\n /**\n * Optional user-chosen color token for UI display.\n *\n * @generated from field: string color = 10;\n */\n color: string;\n\n /**\n * Optional CIDR whitelist. Empty means no IP restriction. Maximum 32 unique\n * entries.\n *\n * @generated from field: repeated string ip_whitelist = 4;\n */\n ipWhitelist: string[];\n\n /**\n * Current key status.\n *\n * @generated from field: auth.v1.ApiKeyStatus status = 6;\n */\n status: ApiKeyStatus;\n\n /**\n * Optional sub-account this key is scoped to (opaque ID; empty = root-level).\n *\n * @generated from field: optional fixed64 subaccount_id = 7;\n */\n subaccountId?: bigint | undefined;\n\n /**\n * Optional API policy attached to this key (opaque ID).\n * Empty means no policy is attached and the key has no permissions.\n *\n * @generated from field: optional fixed64 policy_id = 8;\n */\n policyId?: bigint | undefined;\n\n /**\n * Time in UTC when this key was created.\n *\n * @generated from field: google.protobuf.Timestamp created_at = 20;\n */\n createdAt?: Timestamp | undefined;\n\n /**\n * Last time in UTC when this key authenticated a request. Omitted when the\n * key has not been used.\n *\n * @generated from field: google.protobuf.Timestamp last_used_at = 21;\n */\n lastUsedAt?: Timestamp | undefined;\n\n /**\n * Ed25519 public key bytes associated with this API key. The private key or\n * seed is never returned by the API.\n *\n * @generated from field: bytes public_key_ed25519 = 22;\n */\n publicKeyEd25519: Uint8Array;\n\n /**\n * Optional expiry time in UTC. When set, the key cannot authenticate requests\n * after this time, regardless of status.\n *\n * @generated from field: google.protobuf.Timestamp expires_at = 23;\n */\n expiresAt?: Timestamp | undefined;\n\n /**\n * Read-only actor label describing who created this key, such as a username\n * or account label.\n *\n * @generated from field: string created_by_actor = 24;\n */\n createdByActor: string;\n\n /**\n * Time in UTC when this key's configuration was last changed. For the same\n * key, later is fresher, equal is an idempotent replay, and earlier is stale.\n * Equal timestamps with different configuration indicate an invariant failure.\n * This is independent of last_used_at, which tracks authentication activity.\n *\n * @generated from field: google.protobuf.Timestamp updated_at = 25;\n */\n updatedAt?: Timestamp | undefined;\n\n /**\n * Monotonic resource revision used for conditional updates.\n *\n * @generated from field: uint64 revision = 26;\n */\n revision: bigint;\n};\n\n/**\n * Describes the message auth.v1.ApiKey.\n * Use `create(ApiKeySchema)` to create a new message.\n */\nexport const ApiKeySchema: GenMessage<ApiKey> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 0);\n\n/**\n * CreateApiKeyRequest creates a new API key. Clients generate the Ed25519 key\n * pair locally and submit only the public key.\n *\n * @generated from message auth.v1.CreateApiKeyRequest\n */\nexport type CreateApiKeyRequest = Message<\"auth.v1.CreateApiKeyRequest\"> & {\n /**\n * Human-readable label for the key. Required; 1 to 64 characters.\n *\n * @generated from field: string label = 1;\n */\n label: string;\n\n /**\n * Optional sub-account to scope this key to (opaque ID). If unset, the key is\n * root-level.\n *\n * @generated from field: optional fixed64 subaccount_id = 3;\n */\n subaccountId?: bigint | undefined;\n\n /**\n * Optional user-chosen icon/emoji for UI display.\n *\n * @generated from field: string icon = 6;\n */\n icon: string;\n\n /**\n * Optional user-chosen color token for UI display.\n *\n * @generated from field: string color = 7;\n */\n color: string;\n\n /**\n * Optional CIDR whitelist. Empty means no IP restriction. Maximum 32 unique\n * entries.\n *\n * @generated from field: repeated string ip_whitelist = 4;\n */\n ipWhitelist: string[];\n\n /**\n * Ed25519 public key bytes. Must be exactly 32 bytes. The private key or seed\n * must never be sent to the API.\n *\n * @generated from field: bytes public_key_ed25519 = 5;\n */\n publicKeyEd25519: Uint8Array;\n};\n\n/**\n * Describes the message auth.v1.CreateApiKeyRequest.\n * Use `create(CreateApiKeyRequestSchema)` to create a new message.\n */\nexport const CreateApiKeyRequestSchema: GenMessage<CreateApiKeyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 1);\n\n/**\n * CreateApiKeyResponse returns the created API key metadata.\n *\n * @generated from message auth.v1.CreateApiKeyResponse\n */\nexport type CreateApiKeyResponse = Message<\"auth.v1.CreateApiKeyResponse\"> & {\n /**\n * Created API key metadata. The private key or seed is never returned.\n *\n * @generated from field: auth.v1.ApiKey api_key = 1;\n */\n apiKey?: ApiKey | undefined;\n};\n\n/**\n * Describes the message auth.v1.CreateApiKeyResponse.\n * Use `create(CreateApiKeyResponseSchema)` to create a new message.\n */\nexport const CreateApiKeyResponseSchema: GenMessage<CreateApiKeyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 2);\n\n/**\n * ListApiKeysRequest lists non-revoked API keys owned by the caller.\n *\n * @generated from message auth.v1.ListApiKeysRequest\n */\nexport type ListApiKeysRequest = Message<\"auth.v1.ListApiKeysRequest\"> & {\n /**\n * Optional filter: only keys scoped to this sub-account (opaque ID). If unset,\n * all non-revoked keys owned by the caller are returned.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n};\n\n/**\n * Describes the message auth.v1.ListApiKeysRequest.\n * Use `create(ListApiKeysRequestSchema)` to create a new message.\n */\nexport const ListApiKeysRequestSchema: GenMessage<ListApiKeysRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 3);\n\n/**\n * ListApiKeysResponse contains matching API keys, newest first by creation time.\n *\n * @generated from message auth.v1.ListApiKeysResponse\n */\nexport type ListApiKeysResponse = Message<\"auth.v1.ListApiKeysResponse\"> & {\n /**\n * Matching API keys, newest first. Revoked keys are excluded.\n *\n * @generated from field: repeated auth.v1.ApiKey api_keys = 1;\n */\n apiKeys: ApiKey[];\n};\n\n/**\n * Describes the message auth.v1.ListApiKeysResponse.\n * Use `create(ListApiKeysResponseSchema)` to create a new message.\n */\nexport const ListApiKeysResponseSchema: GenMessage<ListApiKeysResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 4);\n\n/**\n * DeleteApiKeyRequest permanently revokes an API key.\n *\n * @generated from message auth.v1.DeleteApiKeyRequest\n */\nexport type DeleteApiKeyRequest = Message<\"auth.v1.DeleteApiKeyRequest\"> & {\n /**\n * Opaque API key identifier (e.g. \"ak_<hex>\"). This is the stable public\n * handle for a key.\n *\n * @generated from field: string key_id = 1;\n */\n keyId: string;\n};\n\n/**\n * Describes the message auth.v1.DeleteApiKeyRequest.\n * Use `create(DeleteApiKeyRequestSchema)` to create a new message.\n */\nexport const DeleteApiKeyRequestSchema: GenMessage<DeleteApiKeyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 5);\n\n/**\n * DeleteApiKeyResponse is empty when revocation succeeds.\n *\n * @generated from message auth.v1.DeleteApiKeyResponse\n */\nexport type DeleteApiKeyResponse = Message<\"auth.v1.DeleteApiKeyResponse\"> & {\n};\n\n/**\n * Describes the message auth.v1.DeleteApiKeyResponse.\n * Use `create(DeleteApiKeyResponseSchema)` to create a new message.\n */\nexport const DeleteApiKeyResponseSchema: GenMessage<DeleteApiKeyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 6);\n\n/**\n * GetApiKeyRequest returns a single API key owned by the caller's account.\n *\n * @generated from message auth.v1.GetApiKeyRequest\n */\nexport type GetApiKeyRequest = Message<\"auth.v1.GetApiKeyRequest\"> & {\n /**\n * Opaque API key identifier, formatted as \"ak_\" followed by 32 lowercase hex\n * characters.\n *\n * @generated from field: string key_id = 1;\n */\n keyId: string;\n};\n\n/**\n * Describes the message auth.v1.GetApiKeyRequest.\n * Use `create(GetApiKeyRequestSchema)` to create a new message.\n */\nexport const GetApiKeyRequestSchema: GenMessage<GetApiKeyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 7);\n\n/**\n * GetApiKeyResponse returns one API key owned by the caller.\n *\n * @generated from message auth.v1.GetApiKeyResponse\n */\nexport type GetApiKeyResponse = Message<\"auth.v1.GetApiKeyResponse\"> & {\n /**\n * Matching API key metadata.\n *\n * @generated from field: auth.v1.ApiKey api_key = 1;\n */\n apiKey?: ApiKey | undefined;\n};\n\n/**\n * Describes the message auth.v1.GetApiKeyResponse.\n * Use `create(GetApiKeyResponseSchema)` to create a new message.\n */\nexport const GetApiKeyResponseSchema: GenMessage<GetApiKeyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 8);\n\n/**\n * ApiKeyUpdateSpec contains mutable API key configuration.\n *\n * @generated from message auth.v1.ApiKeyUpdateSpec\n */\nexport type ApiKeyUpdateSpec = Message<\"auth.v1.ApiKeyUpdateSpec\"> & {\n /**\n * Human-friendly label for the key. Empty clears the label when selected.\n *\n * @generated from field: string label = 1;\n */\n label: string;\n\n /**\n * User-chosen icon/emoji for UI display. Empty clears the icon when selected.\n *\n * @generated from field: string icon = 2;\n */\n icon: string;\n\n /**\n * User-chosen color token for UI display. Empty clears the color when selected.\n *\n * @generated from field: string color = 3;\n */\n color: string;\n\n /**\n * New status. ACTIVE and DISABLED are allowed; revocation uses DeleteApiKey.\n *\n * @generated from field: auth.v1.ApiKeyStatus status = 4;\n */\n status: ApiKeyStatus;\n\n /**\n * Complete replacement IP whitelist. Empty clears the restriction when selected.\n *\n * @generated from field: repeated string ip_whitelist = 5;\n */\n ipWhitelist: string[];\n\n /**\n * Expiry time in UTC. When selected, omission or the epoch clears expiry.\n *\n * @generated from field: google.protobuf.Timestamp expires_at = 6;\n */\n expiresAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message auth.v1.ApiKeyUpdateSpec.\n * Use `create(ApiKeyUpdateSpecSchema)` to create a new message.\n */\nexport const ApiKeyUpdateSpecSchema: GenMessage<ApiKeyUpdateSpec> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 9);\n\n/**\n * UpdateApiKeyRequest changes selected mutable fields on an existing API key.\n *\n * @generated from message auth.v1.UpdateApiKeyRequest\n */\nexport type UpdateApiKeyRequest = Message<\"auth.v1.UpdateApiKeyRequest\"> & {\n /**\n * Opaque API key identifier to update.\n *\n * @generated from field: string key_id = 1;\n */\n keyId: string;\n\n /**\n * Candidate values for fields selected by update_mask.\n *\n * @generated from field: auth.v1.ApiKeyUpdateSpec api_key = 2;\n */\n apiKey?: ApiKeyUpdateSpec | undefined;\n\n /**\n * Mutable fields to apply. Paths are relative to api_key. The mask is required,\n * must be non-empty, and cannot contain \"*\".\n *\n * @generated from field: google.protobuf.FieldMask update_mask = 3;\n */\n updateMask?: FieldMask | undefined;\n\n /**\n * Revision returned by the latest successful read.\n *\n * @generated from field: uint64 expected_revision = 4;\n */\n expectedRevision: bigint;\n};\n\n/**\n * Describes the message auth.v1.UpdateApiKeyRequest.\n * Use `create(UpdateApiKeyRequestSchema)` to create a new message.\n */\nexport const UpdateApiKeyRequestSchema: GenMessage<UpdateApiKeyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 10);\n\n/**\n * UpdateApiKeyResponse returns the API key after applying the update.\n *\n * @generated from message auth.v1.UpdateApiKeyResponse\n */\nexport type UpdateApiKeyResponse = Message<\"auth.v1.UpdateApiKeyResponse\"> & {\n /**\n * Updated API key metadata.\n *\n * @generated from field: auth.v1.ApiKey api_key = 1;\n */\n apiKey?: ApiKey | undefined;\n};\n\n/**\n * Describes the message auth.v1.UpdateApiKeyResponse.\n * Use `create(UpdateApiKeyResponseSchema)` to create a new message.\n */\nexport const UpdateApiKeyResponseSchema: GenMessage<UpdateApiKeyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 11);\n\n/**\n * Status of an API key.\n *\n * @generated from enum auth.v1.ApiKeyStatus\n */\nexport enum ApiKeyStatus {\n /**\n * No API key status specified.\n *\n * @generated from enum value: API_KEY_STATUS_UNSPECIFIED = 0;\n */\n API_KEY_STATUS_UNSPECIFIED = 0,\n\n /**\n * Key can authenticate requests.\n *\n * @generated from enum value: ACTIVE = 1;\n */\n ACTIVE = 1,\n\n /**\n * Key has been permanently revoked and cannot be used again.\n *\n * @generated from enum value: REVOKED = 2;\n */\n REVOKED = 2,\n\n /**\n * Key is temporarily disabled and cannot authenticate requests until re-enabled.\n *\n * @generated from enum value: DISABLED = 3;\n */\n DISABLED = 3,\n}\n\n/**\n * Describes the enum auth.v1.ApiKeyStatus.\n */\nexport const ApiKeyStatusSchema: GenEnum<ApiKeyStatus> = /*@__PURE__*/\n enumDesc(file_auth_v1_api_keys, 0);\n\n/**\n * ApiKeyService manages API keys for authenticated callers.\n *\n * @generated from service auth.v1.ApiKeyService\n */\nexport const ApiKeyService: GenService<{\n /**\n * Create a new API key for the caller. Account security settings may require\n * MFA enrollment or a fresh step-up proof.\n *\n * @generated from rpc auth.v1.ApiKeyService.CreateApiKey\n */\n createApiKey: {\n methodKind: \"unary\";\n input: typeof CreateApiKeyRequestSchema;\n output: typeof CreateApiKeyResponseSchema;\n },\n /**\n * List non-revoked API keys owned by the caller, newest first.\n *\n * @generated from rpc auth.v1.ApiKeyService.ListApiKeys\n */\n listApiKeys: {\n methodKind: \"unary\";\n input: typeof ListApiKeysRequestSchema;\n output: typeof ListApiKeysResponseSchema;\n },\n /**\n * Get a single API key owned by the caller.\n *\n * @generated from rpc auth.v1.ApiKeyService.GetApiKey\n */\n getApiKey: {\n methodKind: \"unary\";\n input: typeof GetApiKeyRequestSchema;\n output: typeof GetApiKeyResponseSchema;\n },\n /**\n * Revoke an API key permanently.\n *\n * @generated from rpc auth.v1.ApiKeyService.DeleteApiKey\n */\n deleteApiKey: {\n methodKind: \"unary\";\n input: typeof DeleteApiKeyRequestSchema;\n output: typeof DeleteApiKeyResponseSchema;\n },\n /**\n * Update API key metadata and allowed status transitions. Revocation must use\n * DeleteApiKey.\n *\n * @generated from rpc auth.v1.ApiKeyService.UpdateApiKey\n */\n updateApiKey: {\n methodKind: \"unary\";\n input: typeof UpdateApiKeyRequestSchema;\n output: typeof UpdateApiKeyResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_auth_v1_api_keys, 0);\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,MAAa,wBACX,uBAAS,4nFAA4nF;CAAC;CAAiC;CAAgC;AAA0B,CAAC;;;;;AAgIpuF,MAAa,eACX,0BAAY,uBAAuB,CAAC;;;;;AA2DtC,MAAa,4BACX,0BAAY,uBAAuB,CAAC;;;;;AAoBtC,MAAa,6BACX,0BAAY,uBAAuB,CAAC;;;;;AAqBtC,MAAa,2BACX,0BAAY,uBAAuB,CAAC;;;;;AAoBtC,MAAa,4BACX,0BAAY,uBAAuB,CAAC;;;;;AAqBtC,MAAa,4BACX,0BAAY,uBAAuB,CAAC;;;;;AActC,MAAa,6BACX,0BAAY,uBAAuB,CAAC;;;;;AAqBtC,MAAa,yBACX,0BAAY,uBAAuB,CAAC;;;;;AAoBtC,MAAa,0BACX,0BAAY,uBAAuB,CAAC;;;;;AAuDtC,MAAa,yBACX,0BAAY,uBAAuB,CAAC;;;;;AA0CtC,MAAa,4BACX,0BAAY,uBAAuB,EAAE;;;;;AAoBvC,MAAa,6BACX,0BAAY,uBAAuB,EAAE;;;;;;AAOvC,IAAY,eAAL,yBAAA,cAAA;;;;;;CAML,aAAA,aAAA,gCAAA,KAAA;;;;;;CAOA,aAAA,aAAA,YAAA,KAAA;;;;;;CAOA,aAAA,aAAA,aAAA,KAAA;;;;;;CAOA,aAAA,aAAA,cAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,qBACX,uBAAS,uBAAuB,CAAC;;;;;;AAOnC,MAAa,gBAsDX,0BAAY,uBAAuB,CAAC"}
1
+ {"version":3,"file":"api_keys_pb.js","names":[],"sources":["../../../../src/gen/auth/v1/api_keys_pb.ts"],"sourcesContent":["// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file auth/v1/api_keys.proto (package auth.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 { FieldMask, Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_field_mask, file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_polyester_api_options } from \"../../polyester/api/options_pb.js\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file auth/v1/api_keys.proto.\n */\nexport const file_auth_v1_api_keys: GenFile = /*@__PURE__*/\n fileDesc(\"ChZhdXRoL3YxL2FwaV9rZXlzLnByb3RvEgdhdXRoLnYxIucDCgZBcGlLZXkSEAoGa2V5X2lkGAIgASgJQgASDQoFbGFiZWwYAyABKAkSDgoEaWNvbhgJIAEoCUIAEg8KBWNvbG9yGAogASgJQgASFgoMaXBfd2hpdGVsaXN0GAQgAygJQgASJQoGc3RhdHVzGAYgASgOMhUuYXV0aC52MS5BcGlLZXlTdGF0dXMSGgoNc3ViYWNjb3VudF9pZBgHIAEoBkgAiAEBEhYKCXBvbGljeV9pZBgIIAEoBkgBiAEBEi4KCmNyZWF0ZWRfYXQYFCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKDGxhc3RfdXNlZF9hdBgVIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoScHVibGljX2tleV9lZDI1NTE5GBYgASgMEi4KCmV4cGlyZXNfYXQYFyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhgKEGNyZWF0ZWRfYnlfYWN0b3IYGCABKAkSLgoKdXBkYXRlZF9hdBgZIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEAoIcmV2aXNpb24YGiABKARCEAoOX3N1YmFjY291bnRfaWRCDAoKX3BvbGljeV9pZCKrAQoTQ3JlYXRlQXBpS2V5UmVxdWVzdBIPCgVsYWJlbBgBIAEoCUIAEhoKDXN1YmFjY291bnRfaWQYAyABKAZIAIgBARIOCgRpY29uGAYgASgJQgASDwoFY29sb3IYByABKAlCABIWCgxpcF93aGl0ZWxpc3QYBCADKAlCABIcChJwdWJsaWNfa2V5X2VkMjU1MTkYBSABKAxCAEIQCg5fc3ViYWNjb3VudF9pZCI4ChRDcmVhdGVBcGlLZXlSZXNwb25zZRIgCgdhcGlfa2V5GAEgASgLMg8uYXV0aC52MS5BcGlLZXkiQgoSTGlzdEFwaUtleXNSZXF1ZXN0EhoKDXN1YmFjY291bnRfaWQYASABKAZIAIgBAUIQCg5fc3ViYWNjb3VudF9pZCI4ChNMaXN0QXBpS2V5c1Jlc3BvbnNlEiEKCGFwaV9rZXlzGAEgAygLMg8uYXV0aC52MS5BcGlLZXkiJwoTRGVsZXRlQXBpS2V5UmVxdWVzdBIQCgZrZXlfaWQYASABKAlCACIWChREZWxldGVBcGlLZXlSZXNwb25zZSIkChBHZXRBcGlLZXlSZXF1ZXN0EhAKBmtleV9pZBgBIAEoCUIAIjUKEUdldEFwaUtleVJlc3BvbnNlEiAKB2FwaV9rZXkYASABKAsyDy5hdXRoLnYxLkFwaUtleSK3AQoQQXBpS2V5VXBkYXRlU3BlYxIPCgVsYWJlbBgBIAEoCUIAEg4KBGljb24YAiABKAlCABIPCgVjb2xvchgDIAEoCUIAEicKBnN0YXR1cxgEIAEoDjIVLmF1dGgudjEuQXBpS2V5U3RhdHVzQgASFgoMaXBfd2hpdGVsaXN0GAUgAygJQgASLgoKZXhwaXJlc19hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXA6ACKlAQoTVXBkYXRlQXBpS2V5UmVxdWVzdBIQCgZrZXlfaWQYASABKAlCABIsCgdhcGlfa2V5GAIgASgLMhkuYXV0aC52MS5BcGlLZXlVcGRhdGVTcGVjQgASMQoLdXBkYXRlX21hc2sYAyABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQgASGwoRZXhwZWN0ZWRfcmV2aXNpb24YBCABKARCACI4ChRVcGRhdGVBcGlLZXlSZXNwb25zZRIgCgdhcGlfa2V5GAEgASgLMg8uYXV0aC52MS5BcGlLZXkqVQoMQXBpS2V5U3RhdHVzEh4KGkFQSV9LRVlfU1RBVFVTX1VOU1BFQ0lGSUVEEAASCgoGQUNUSVZFEAESCwoHUkVWT0tFRBACEgwKCERJU0FCTEVEEAMyjgMKDUFwaUtleVNlcnZpY2USTQoMQ3JlYXRlQXBpS2V5EhwuYXV0aC52MS5DcmVhdGVBcGlLZXlSZXF1ZXN0Gh0uYXV0aC52MS5DcmVhdGVBcGlLZXlSZXNwb25zZSIAEkoKC0xpc3RBcGlLZXlzEhsuYXV0aC52MS5MaXN0QXBpS2V5c1JlcXVlc3QaHC5hdXRoLnYxLkxpc3RBcGlLZXlzUmVzcG9uc2UiABJECglHZXRBcGlLZXkSGS5hdXRoLnYxLkdldEFwaUtleVJlcXVlc3QaGi5hdXRoLnYxLkdldEFwaUtleVJlc3BvbnNlIgASTQoMRGVsZXRlQXBpS2V5EhwuYXV0aC52MS5EZWxldGVBcGlLZXlSZXF1ZXN0Gh0uYXV0aC52MS5EZWxldGVBcGlLZXlSZXNwb25zZSIAEk0KDFVwZGF0ZUFwaUtleRIcLmF1dGgudjEuVXBkYXRlQXBpS2V5UmVxdWVzdBodLmF1dGgudjEuVXBkYXRlQXBpS2V5UmVzcG9uc2UiAEI8WjpnaXRodWIuY29tL0ZhYnJpYy1MYWJzL3BvbHllc3Rlci1zZGstZ28vZ2VuL2F1dGgvdjE7YXV0aHYxYgZwcm90bzM=\", [file_google_protobuf_field_mask, file_google_protobuf_timestamp, file_polyester_api_options]);\n\n/**\n * ApiKey is public API key metadata. It never includes the private key or seed.\n *\n * @generated from message auth.v1.ApiKey\n */\nexport type ApiKey = Message<\"auth.v1.ApiKey\"> & {\n /**\n * Stable opaque identifier used to refer to this key, formatted as \"ak_\"\n * followed by 32 lowercase hex characters.\n *\n * @generated from field: string key_id = 2;\n */\n keyId: string;\n\n /**\n * Human-readable label for the key. Maximum length is 64 characters.\n *\n * @generated from field: string label = 3;\n */\n label: string;\n\n /**\n * Optional user-chosen icon/emoji for UI display.\n *\n * @generated from field: string icon = 9;\n */\n icon: string;\n\n /**\n * Optional user-chosen color token for UI display.\n *\n * @generated from field: string color = 10;\n */\n color: string;\n\n /**\n * Optional CIDR whitelist. Empty means no IP restriction. Maximum 32 unique\n * entries.\n *\n * @generated from field: repeated string ip_whitelist = 4;\n */\n ipWhitelist: string[];\n\n /**\n * Current key status.\n *\n * @generated from field: auth.v1.ApiKeyStatus status = 6;\n */\n status: ApiKeyStatus;\n\n /**\n * Optional sub-account this key is scoped to (opaque ID; empty = root-level).\n *\n * @generated from field: optional fixed64 subaccount_id = 7;\n */\n subaccountId?: bigint | undefined;\n\n /**\n * Optional API policy attached to this key (opaque ID).\n * Empty means no policy is attached and the key has no permissions.\n *\n * @generated from field: optional fixed64 policy_id = 8;\n */\n policyId?: bigint | undefined;\n\n /**\n * Time in UTC when this key was created.\n *\n * @generated from field: google.protobuf.Timestamp created_at = 20;\n */\n createdAt?: Timestamp | undefined;\n\n /**\n * Last time in UTC when this key authenticated a request. Omitted when the\n * key has not been used.\n *\n * @generated from field: google.protobuf.Timestamp last_used_at = 21;\n */\n lastUsedAt?: Timestamp | undefined;\n\n /**\n * Ed25519 public key bytes associated with this API key. The private key or\n * seed is never returned by the API.\n *\n * @generated from field: bytes public_key_ed25519 = 22;\n */\n publicKeyEd25519: Uint8Array;\n\n /**\n * Optional expiry time in UTC. When set, the key cannot authenticate requests\n * after this time, regardless of status.\n *\n * @generated from field: google.protobuf.Timestamp expires_at = 23;\n */\n expiresAt?: Timestamp | undefined;\n\n /**\n * Read-only actor label describing who created this key, such as a username\n * or account label.\n *\n * @generated from field: string created_by_actor = 24;\n */\n createdByActor: string;\n\n /**\n * Time in UTC when this key's configuration was last changed. For the same\n * key, later is fresher, equal is an idempotent replay, and earlier is stale.\n * Equal timestamps with different configuration indicate an invariant failure.\n * This is independent of last_used_at, which tracks authentication activity.\n *\n * @generated from field: google.protobuf.Timestamp updated_at = 25;\n */\n updatedAt?: Timestamp | undefined;\n\n /**\n * Monotonic resource revision used for conditional updates.\n *\n * @generated from field: uint64 revision = 26;\n */\n revision: bigint;\n};\n\n/**\n * Describes the message auth.v1.ApiKey.\n * Use `create(ApiKeySchema)` to create a new message.\n */\nexport const ApiKeySchema: GenMessage<ApiKey> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 0);\n\n/**\n * CreateApiKeyRequest creates a new API key. Clients generate the Ed25519 key\n * pair locally and submit only the public key.\n *\n * @generated from message auth.v1.CreateApiKeyRequest\n */\nexport type CreateApiKeyRequest = Message<\"auth.v1.CreateApiKeyRequest\"> & {\n /**\n * Human-readable label for the key. Required; 1 to 64 characters.\n *\n * @generated from field: string label = 1;\n */\n label: string;\n\n /**\n * Optional sub-account to scope this key to (opaque ID). If unset, the key is\n * root-level.\n *\n * @generated from field: optional fixed64 subaccount_id = 3;\n */\n subaccountId?: bigint | undefined;\n\n /**\n * Optional user-chosen icon/emoji for UI display.\n *\n * @generated from field: string icon = 6;\n */\n icon: string;\n\n /**\n * Optional user-chosen color token for UI display.\n *\n * @generated from field: string color = 7;\n */\n color: string;\n\n /**\n * Optional CIDR whitelist. Empty means no IP restriction. Maximum 32 unique\n * entries.\n *\n * @generated from field: repeated string ip_whitelist = 4;\n */\n ipWhitelist: string[];\n\n /**\n * Ed25519 public key bytes. Must be exactly 32 bytes. The private key or seed\n * must never be sent to the API.\n *\n * @generated from field: bytes public_key_ed25519 = 5;\n */\n publicKeyEd25519: Uint8Array;\n};\n\n/**\n * Describes the message auth.v1.CreateApiKeyRequest.\n * Use `create(CreateApiKeyRequestSchema)` to create a new message.\n */\nexport const CreateApiKeyRequestSchema: GenMessage<CreateApiKeyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 1);\n\n/**\n * CreateApiKeyResponse returns the created API key metadata.\n *\n * @generated from message auth.v1.CreateApiKeyResponse\n */\nexport type CreateApiKeyResponse = Message<\"auth.v1.CreateApiKeyResponse\"> & {\n /**\n * Created API key metadata. The private key or seed is never returned.\n *\n * @generated from field: auth.v1.ApiKey api_key = 1;\n */\n apiKey?: ApiKey | undefined;\n};\n\n/**\n * Describes the message auth.v1.CreateApiKeyResponse.\n * Use `create(CreateApiKeyResponseSchema)` to create a new message.\n */\nexport const CreateApiKeyResponseSchema: GenMessage<CreateApiKeyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 2);\n\n/**\n * ListApiKeysRequest lists non-revoked API keys visible to the caller.\n *\n * @generated from message auth.v1.ListApiKeysRequest\n */\nexport type ListApiKeysRequest = Message<\"auth.v1.ListApiKeysRequest\"> & {\n /**\n * Optional filter: only keys scoped to this sub-account (opaque ID). The\n * caller must own or administer the sub-account. If unset, only non-revoked\n * keys owned by the caller are returned.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n};\n\n/**\n * Describes the message auth.v1.ListApiKeysRequest.\n * Use `create(ListApiKeysRequestSchema)` to create a new message.\n */\nexport const ListApiKeysRequestSchema: GenMessage<ListApiKeysRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 3);\n\n/**\n * ListApiKeysResponse contains matching API keys, newest first by creation time.\n *\n * @generated from message auth.v1.ListApiKeysResponse\n */\nexport type ListApiKeysResponse = Message<\"auth.v1.ListApiKeysResponse\"> & {\n /**\n * Matching API keys, newest first. Revoked keys are excluded.\n *\n * @generated from field: repeated auth.v1.ApiKey api_keys = 1;\n */\n apiKeys: ApiKey[];\n};\n\n/**\n * Describes the message auth.v1.ListApiKeysResponse.\n * Use `create(ListApiKeysResponseSchema)` to create a new message.\n */\nexport const ListApiKeysResponseSchema: GenMessage<ListApiKeysResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 4);\n\n/**\n * DeleteApiKeyRequest permanently revokes an API key.\n *\n * @generated from message auth.v1.DeleteApiKeyRequest\n */\nexport type DeleteApiKeyRequest = Message<\"auth.v1.DeleteApiKeyRequest\"> & {\n /**\n * Opaque API key identifier (e.g. \"ak_<hex>\"). This is the stable public\n * handle for a key.\n *\n * @generated from field: string key_id = 1;\n */\n keyId: string;\n};\n\n/**\n * Describes the message auth.v1.DeleteApiKeyRequest.\n * Use `create(DeleteApiKeyRequestSchema)` to create a new message.\n */\nexport const DeleteApiKeyRequestSchema: GenMessage<DeleteApiKeyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 5);\n\n/**\n * DeleteApiKeyResponse is empty when revocation succeeds.\n *\n * @generated from message auth.v1.DeleteApiKeyResponse\n */\nexport type DeleteApiKeyResponse = Message<\"auth.v1.DeleteApiKeyResponse\"> & {\n};\n\n/**\n * Describes the message auth.v1.DeleteApiKeyResponse.\n * Use `create(DeleteApiKeyResponseSchema)` to create a new message.\n */\nexport const DeleteApiKeyResponseSchema: GenMessage<DeleteApiKeyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 6);\n\n/**\n * GetApiKeyRequest returns one API key visible to its owner or a sub-account admin.\n *\n * @generated from message auth.v1.GetApiKeyRequest\n */\nexport type GetApiKeyRequest = Message<\"auth.v1.GetApiKeyRequest\"> & {\n /**\n * Opaque API key identifier, formatted as \"ak_\" followed by 32 lowercase hex\n * characters.\n *\n * @generated from field: string key_id = 1;\n */\n keyId: string;\n};\n\n/**\n * Describes the message auth.v1.GetApiKeyRequest.\n * Use `create(GetApiKeyRequestSchema)` to create a new message.\n */\nexport const GetApiKeyRequestSchema: GenMessage<GetApiKeyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 7);\n\n/**\n * GetApiKeyResponse returns one API key visible to the caller.\n *\n * @generated from message auth.v1.GetApiKeyResponse\n */\nexport type GetApiKeyResponse = Message<\"auth.v1.GetApiKeyResponse\"> & {\n /**\n * Matching API key metadata.\n *\n * @generated from field: auth.v1.ApiKey api_key = 1;\n */\n apiKey?: ApiKey | undefined;\n};\n\n/**\n * Describes the message auth.v1.GetApiKeyResponse.\n * Use `create(GetApiKeyResponseSchema)` to create a new message.\n */\nexport const GetApiKeyResponseSchema: GenMessage<GetApiKeyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 8);\n\n/**\n * ApiKeyUpdateSpec contains mutable API key configuration.\n *\n * @generated from message auth.v1.ApiKeyUpdateSpec\n */\nexport type ApiKeyUpdateSpec = Message<\"auth.v1.ApiKeyUpdateSpec\"> & {\n /**\n * Human-friendly label for the key. Empty clears the label when selected.\n *\n * @generated from field: string label = 1;\n */\n label: string;\n\n /**\n * User-chosen icon/emoji for UI display. Empty clears the icon when selected.\n *\n * @generated from field: string icon = 2;\n */\n icon: string;\n\n /**\n * User-chosen color token for UI display. Empty clears the color when selected.\n *\n * @generated from field: string color = 3;\n */\n color: string;\n\n /**\n * New status. ACTIVE and DISABLED are allowed; revocation uses DeleteApiKey.\n *\n * @generated from field: auth.v1.ApiKeyStatus status = 4;\n */\n status: ApiKeyStatus;\n\n /**\n * Complete replacement IP whitelist. Empty clears the restriction when selected.\n *\n * @generated from field: repeated string ip_whitelist = 5;\n */\n ipWhitelist: string[];\n\n /**\n * Expiry time in UTC. When selected, omission or the epoch clears expiry.\n *\n * @generated from field: google.protobuf.Timestamp expires_at = 6;\n */\n expiresAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message auth.v1.ApiKeyUpdateSpec.\n * Use `create(ApiKeyUpdateSpecSchema)` to create a new message.\n */\nexport const ApiKeyUpdateSpecSchema: GenMessage<ApiKeyUpdateSpec> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 9);\n\n/**\n * UpdateApiKeyRequest changes selected mutable fields on an existing API key.\n *\n * @generated from message auth.v1.UpdateApiKeyRequest\n */\nexport type UpdateApiKeyRequest = Message<\"auth.v1.UpdateApiKeyRequest\"> & {\n /**\n * Opaque API key identifier to update.\n *\n * @generated from field: string key_id = 1;\n */\n keyId: string;\n\n /**\n * Candidate values for fields selected by update_mask.\n *\n * @generated from field: auth.v1.ApiKeyUpdateSpec api_key = 2;\n */\n apiKey?: ApiKeyUpdateSpec | undefined;\n\n /**\n * Mutable fields to apply. Paths are relative to api_key. The mask is required,\n * must be non-empty, and cannot contain \"*\".\n *\n * @generated from field: google.protobuf.FieldMask update_mask = 3;\n */\n updateMask?: FieldMask | undefined;\n\n /**\n * Revision returned by the latest successful read.\n *\n * @generated from field: uint64 expected_revision = 4;\n */\n expectedRevision: bigint;\n};\n\n/**\n * Describes the message auth.v1.UpdateApiKeyRequest.\n * Use `create(UpdateApiKeyRequestSchema)` to create a new message.\n */\nexport const UpdateApiKeyRequestSchema: GenMessage<UpdateApiKeyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 10);\n\n/**\n * UpdateApiKeyResponse returns the API key after applying the update.\n *\n * @generated from message auth.v1.UpdateApiKeyResponse\n */\nexport type UpdateApiKeyResponse = Message<\"auth.v1.UpdateApiKeyResponse\"> & {\n /**\n * Updated API key metadata.\n *\n * @generated from field: auth.v1.ApiKey api_key = 1;\n */\n apiKey?: ApiKey | undefined;\n};\n\n/**\n * Describes the message auth.v1.UpdateApiKeyResponse.\n * Use `create(UpdateApiKeyResponseSchema)` to create a new message.\n */\nexport const UpdateApiKeyResponseSchema: GenMessage<UpdateApiKeyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_api_keys, 11);\n\n/**\n * Status of an API key.\n *\n * @generated from enum auth.v1.ApiKeyStatus\n */\nexport enum ApiKeyStatus {\n /**\n * No API key status specified.\n *\n * @generated from enum value: API_KEY_STATUS_UNSPECIFIED = 0;\n */\n API_KEY_STATUS_UNSPECIFIED = 0,\n\n /**\n * Key can authenticate requests.\n *\n * @generated from enum value: ACTIVE = 1;\n */\n ACTIVE = 1,\n\n /**\n * Key has been permanently revoked and cannot be used again.\n *\n * @generated from enum value: REVOKED = 2;\n */\n REVOKED = 2,\n\n /**\n * Key is temporarily disabled and cannot authenticate requests until re-enabled.\n *\n * @generated from enum value: DISABLED = 3;\n */\n DISABLED = 3,\n}\n\n/**\n * Describes the enum auth.v1.ApiKeyStatus.\n */\nexport const ApiKeyStatusSchema: GenEnum<ApiKeyStatus> = /*@__PURE__*/\n enumDesc(file_auth_v1_api_keys, 0);\n\n/**\n * ApiKeyService manages API keys for authenticated callers.\n *\n * @generated from service auth.v1.ApiKeyService\n */\nexport const ApiKeyService: GenService<{\n /**\n * Create a new API key for the caller. Account security settings may require\n * MFA enrollment or a fresh step-up proof.\n *\n * @generated from rpc auth.v1.ApiKeyService.CreateApiKey\n */\n createApiKey: {\n methodKind: \"unary\";\n input: typeof CreateApiKeyRequestSchema;\n output: typeof CreateApiKeyResponseSchema;\n },\n /**\n * List non-revoked API keys visible to the caller, newest first.\n *\n * @generated from rpc auth.v1.ApiKeyService.ListApiKeys\n */\n listApiKeys: {\n methodKind: \"unary\";\n input: typeof ListApiKeysRequestSchema;\n output: typeof ListApiKeysResponseSchema;\n },\n /**\n * Get a single API key owned by the caller or scoped to a sub-account the caller administers.\n *\n * @generated from rpc auth.v1.ApiKeyService.GetApiKey\n */\n getApiKey: {\n methodKind: \"unary\";\n input: typeof GetApiKeyRequestSchema;\n output: typeof GetApiKeyResponseSchema;\n },\n /**\n * Revoke an API key permanently.\n *\n * @generated from rpc auth.v1.ApiKeyService.DeleteApiKey\n */\n deleteApiKey: {\n methodKind: \"unary\";\n input: typeof DeleteApiKeyRequestSchema;\n output: typeof DeleteApiKeyResponseSchema;\n },\n /**\n * Update API key metadata and allowed status transitions. Revocation must use\n * DeleteApiKey.\n *\n * @generated from rpc auth.v1.ApiKeyService.UpdateApiKey\n */\n updateApiKey: {\n methodKind: \"unary\";\n input: typeof UpdateApiKeyRequestSchema;\n output: typeof UpdateApiKeyResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_auth_v1_api_keys, 0);\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,MAAa,wBACX,uBAAS,4nFAA4nF;CAAC;CAAiC;CAAgC;AAA0B,CAAC;;;;;AAgIpuF,MAAa,eACX,0BAAY,uBAAuB,CAAC;;;;;AA2DtC,MAAa,4BACX,0BAAY,uBAAuB,CAAC;;;;;AAoBtC,MAAa,6BACX,0BAAY,uBAAuB,CAAC;;;;;AAsBtC,MAAa,2BACX,0BAAY,uBAAuB,CAAC;;;;;AAoBtC,MAAa,4BACX,0BAAY,uBAAuB,CAAC;;;;;AAqBtC,MAAa,4BACX,0BAAY,uBAAuB,CAAC;;;;;AActC,MAAa,6BACX,0BAAY,uBAAuB,CAAC;;;;;AAqBtC,MAAa,yBACX,0BAAY,uBAAuB,CAAC;;;;;AAoBtC,MAAa,0BACX,0BAAY,uBAAuB,CAAC;;;;;AAuDtC,MAAa,yBACX,0BAAY,uBAAuB,CAAC;;;;;AA0CtC,MAAa,4BACX,0BAAY,uBAAuB,EAAE;;;;;AAoBvC,MAAa,6BACX,0BAAY,uBAAuB,EAAE;;;;;;AAOvC,IAAY,eAAL,yBAAA,cAAA;;;;;;CAML,aAAA,aAAA,gCAAA,KAAA;;;;;;CAOA,aAAA,aAAA,YAAA,KAAA;;;;;;CAOA,aAAA,aAAA,aAAA,KAAA;;;;;;CAOA,aAAA,aAAA,cAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,qBACX,uBAAS,uBAAuB,CAAC;;;;;;AAOnC,MAAa,gBAsDX,0BAAY,uBAAuB,CAAC"}
@@ -221,8 +221,10 @@ declare const SubaccountPolicyViewSchema: GenMessage<SubaccountPolicyView>;
221
221
  */
222
222
  type ListSubaccountPoliciesRequest = Message<"auth.v1.ListSubaccountPoliciesRequest"> & {
223
223
  /**
224
- * Optional sub-account context for delegated administration. When omitted,
225
- * only policies owned by the caller's root account are returned.
224
+ * Optional sub-account context. When provided, a current member may read the
225
+ * policy attached to that sub-account; the owner retains visibility of all
226
+ * policies owned by their root account. When omitted, only policies owned by
227
+ * the caller's root account are returned.
226
228
  *
227
229
  * @generated from field: optional fixed64 subaccount_id = 1;
228
230
  */
@@ -265,8 +267,10 @@ type GetSubaccountPolicyRequest = Message<"auth.v1.GetSubaccountPolicyRequest">
265
267
  */
266
268
  policyId: bigint;
267
269
  /**
268
- * Optional sub-account context for delegated administration. When omitted,
269
- * the policy must be owned by the caller's root account.
270
+ * Optional sub-account context. When provided, a current member may read the
271
+ * policy attached to that sub-account; the owner may also read another policy
272
+ * owned by their root account. When omitted, the policy must be owned by the
273
+ * caller's root account.
270
274
  *
271
275
  * @generated from field: optional fixed64 subaccount_id = 2;
272
276
  */
@@ -1 +1 @@
1
- {"version":3,"file":"policies_pb.d.ts","names":[],"sources":["../../../../src/gen/auth/v1/policies_pb.ts"],"mappings":"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"}
1
+ {"version":3,"file":"policies_pb.d.ts","names":[],"sources":["../../../../src/gen/auth/v1/policies_pb.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"policies_pb.js","names":[],"sources":["../../../../src/gen/auth/v1/policies_pb.ts"],"sourcesContent":["// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file auth/v1/policies.proto (package auth.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 { FieldMask, Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_field_mask, file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_polyester_api_options } from \"../../polyester/api/options_pb.js\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file auth/v1/policies.proto.\n */\nexport const file_auth_v1_policies: GenFile = /*@__PURE__*/\n fileDesc(\"ChZhdXRoL3YxL3BvbGljaWVzLnByb3RvEgdhdXRoLnYxIj8KC01hcmtldFNjb3BlIjAKBVZhbHVlEg8KC1VOU1BFQ0lGSUVEEAASBwoDQUxMEAESDQoJQUxMT1dMSVNUEAIiKQoSU3BvdE1hcmtldFNlbGVjdG9yEhMKCXN5bWJvbF9pZBgBIAEoDUIAIiMKDlNwb3RNYXJrZXRSdWxlEhEKCXN5bWJvbF9pZBgBIAEoDSLvBgoUU3ViYWNjb3VudFBvbGljeVZpZXcSCgoCaWQYASABKAYSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRItCgxzcG90X21hcmtldHMYBCADKAsyFy5hdXRoLnYxLlNwb3RNYXJrZXRSdWxlEjcKEXNwb3RfbWFya2V0X3Njb3BlGAYgASgOMhouYXV0aC52MS5NYXJrZXRTY29wZS5WYWx1ZUIAEigKB2FjdGlvbnMYCCADKA4yFS5hdXRoLnYxLlBvbGljeUFjdGlvbkIAEhMKC2lzX3RlbXBsYXRlGAogASgIEhoKEnNvdXJjZV90ZW1wbGF0ZV9pZBgLIAEoBhIaChJtYXhfb3JkZXJfbm90aW9uYWwYDSABKAQSFwoPbWF4X29wZW5fb3JkZXJzGA4gASgNEhYKDnRyYWRpbmdfaGFsdGVkGBcgASgIEg4KBmxvY2tlZBgbIAEoCBItCglyZXZpZXdfYXQYHCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmV4cGlyZXNfYXQYHSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmNyZWF0ZWRfYXQYFCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYFSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhAKCHJldmlzaW9uGB4gASgESgQIBRAGSgQIBxAISgQIDBANSgQIDxAUSgQIFhAXSgQIGBAbUgxwZXJwX21hcmtldHNSEXBlcnBfbWFya2V0X3Njb3BlUhNnbG9iYWxfbm90aW9uYWxfY2FwUhJtYXhfb3Blbl9wb3NpdGlvbnNSFmdsb2JhbF9wZXJwX2xldmVyYWdlX3hSIWRhaWx5X2ludGVybmFsX3RyYW5zZmVyX291dF9saW1pdFIUZGFpbHlfd2l0aGRyYXdfbGltaXRSG2ludGVybmFsX3RyYW5zZmVyc19vd25fb25seVIaZW5mb3JjZV93aXRoZHJhd193aGl0ZWxpc3RSEGxpcXVpZGF0aW9uX29ubHlSEGRhaWx5X2xvc3NfbGltaXRSG2ludHJhZGF5X2RyYXdkb3duX2xpbWl0X2JwcyJPCh1MaXN0U3ViYWNjb3VudFBvbGljaWVzUmVxdWVzdBIcCg1zdWJhY2NvdW50X2lkGAEgASgGQgBIAIgBAUIQCg5fc3ViYWNjb3VudF9pZCJRCh5MaXN0U3ViYWNjb3VudFBvbGljaWVzUmVzcG9uc2USLwoIcG9saWNpZXMYASADKAsyHS5hdXRoLnYxLlN1YmFjY291bnRQb2xpY3lWaWV3ImEKGkdldFN1YmFjY291bnRQb2xpY3lSZXF1ZXN0EhMKCXBvbGljeV9pZBgBIAEoBkIAEhwKDXN1YmFjY291bnRfaWQYAiABKAZCAEgAiAEBQhAKDl9zdWJhY2NvdW50X2lkIkwKG0dldFN1YmFjY291bnRQb2xpY3lSZXNwb25zZRItCgZwb2xpY3kYASABKAsyHS5hdXRoLnYxLlN1YmFjY291bnRQb2xpY3lWaWV3IsQFChRTdWJhY2NvdW50UG9saWN5U3BlYxIOCgRuYW1lGAEgASgJQgASFQoLZGVzY3JpcHRpb24YAiABKAlCABIxCgxzcG90X21hcmtldHMYAyADKAsyGy5hdXRoLnYxLlNwb3RNYXJrZXRTZWxlY3RvchI3ChFzcG90X21hcmtldF9zY29wZRgFIAEoDjIaLmF1dGgudjEuTWFya2V0U2NvcGUuVmFsdWVCABIoCgdhY3Rpb25zGAcgAygOMhUuYXV0aC52MS5Qb2xpY3lBY3Rpb25CABIaChJtYXhfb3JkZXJfbm90aW9uYWwYDSABKAQSFwoPbWF4X29wZW5fb3JkZXJzGA4gASgNEhYKDnRyYWRpbmdfaGFsdGVkGBUgASgIEg4KBmxvY2tlZBgZIAEoCBItCglyZXZpZXdfYXQYGiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmV4cGlyZXNfYXQYGyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wOgBKBAgEEAVKBAgGEAdKBAgMEA1KBAgPEBVKBAgWEBlSDHBlcnBfbWFya2V0c1IRcGVycF9tYXJrZXRfc2NvcGVSE2dsb2JhbF9ub3Rpb25hbF9jYXBSEm1heF9vcGVuX3Bvc2l0aW9uc1IWZ2xvYmFsX3BlcnBfbGV2ZXJhZ2VfeFIhZGFpbHlfaW50ZXJuYWxfdHJhbnNmZXJfb3V0X2xpbWl0UhRkYWlseV93aXRoZHJhd19saW1pdFIbaW50ZXJuYWxfdHJhbnNmZXJzX293bl9vbmx5UhplbmZvcmNlX3dpdGhkcmF3X3doaXRlbGlzdFIQbGlxdWlkYXRpb25fb25seVIQZGFpbHlfbG9zc19saW1pdFIbaW50cmFkYXlfZHJhd2Rvd25fbGltaXRfYnBzIoABCh1DcmVhdGVTdWJhY2NvdW50UG9saWN5UmVxdWVzdBIvCgZwb2xpY3kYASABKAsyHS5hdXRoLnYxLlN1YmFjY291bnRQb2xpY3lTcGVjQgASHAoNc3ViYWNjb3VudF9pZBgCIAEoBkIASACIAQFCEAoOX3N1YmFjY291bnRfaWQiTwoeQ3JlYXRlU3ViYWNjb3VudFBvbGljeVJlc3BvbnNlEi0KBnBvbGljeRgBIAEoCzIdLmF1dGgudjEuU3ViYWNjb3VudFBvbGljeVZpZXcitQEKHVVwZGF0ZVN1YmFjY291bnRQb2xpY3lSZXF1ZXN0EhMKCXBvbGljeV9pZBgBIAEoBkIAEi8KBnBvbGljeRgCIAEoCzIdLmF1dGgudjEuU3ViYWNjb3VudFBvbGljeVNwZWNCABIxCgt1cGRhdGVfbWFzaxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCABIbChFleHBlY3RlZF9yZXZpc2lvbhgEIAEoBEIAIk8KHlVwZGF0ZVN1YmFjY291bnRQb2xpY3lSZXNwb25zZRItCgZwb2xpY3kYASABKAsyHS5hdXRoLnYxLlN1YmFjY291bnRQb2xpY3lWaWV3IjQKHURlbGV0ZVN1YmFjY291bnRQb2xpY3lSZXF1ZXN0EhMKCXBvbGljeV9pZBgBIAEoBkIAIiAKHkRlbGV0ZVN1YmFjY291bnRQb2xpY3lSZXNwb25zZSJIChpTZXRTdWJhY2NvdW50UG9saWN5UmVxdWVzdBIXCg1zdWJhY2NvdW50X2lkGAEgASgGQgASEQoJcG9saWN5X2lkGAIgASgGIh0KG1NldFN1YmFjY291bnRQb2xpY3lSZXNwb25zZSL/AwoNQXBpUG9saWN5VmlldxIKCgJpZBgBIAEoBhIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEi0KDHNwb3RfbWFya2V0cxgEIAMoCzIXLmF1dGgudjEuU3BvdE1hcmtldFJ1bGUSKAoHYWN0aW9ucxgGIAMoDjIVLmF1dGgudjEuUG9saWN5QWN0aW9uQgASNwoRc3BvdF9tYXJrZXRfc2NvcGUYByABKA4yGi5hdXRoLnYxLk1hcmtldFNjb3BlLlZhbHVlQgASEwoLaXNfdGVtcGxhdGUYEyABKAgSGgoSc291cmNlX3RlbXBsYXRlX2lkGBQgASgGEi4KCmNyZWF0ZWRfYXQYFSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhAKCHJldmlzaW9uGBcgASgESgQIBRAGSgQICBAJSgQIDRAOSgQIERASSgQIEhATUgxwZXJwX21hcmtldHNSEXBlcnBfbWFya2V0X3Njb3BlUiFkYWlseV9pbnRlcm5hbF90cmFuc2Zlcl9vdXRfbGltaXRSFGRhaWx5X3dpdGhkcmF3X2xpbWl0UhJtYXhfb3JkZXJfbm90aW9uYWwiOgoWTGlzdEFwaVBvbGljaWVzUmVxdWVzdBIVCgZrZXlfaWQYASABKAlCAEgAiAEBQgkKB19rZXlfaWQiQwoXTGlzdEFwaVBvbGljaWVzUmVzcG9uc2USKAoIcG9saWNpZXMYASADKAsyFi5hdXRoLnYxLkFwaVBvbGljeVZpZXciTAoTR2V0QXBpUG9saWN5UmVxdWVzdBITCglwb2xpY3lfaWQYASABKAZCABIVCgZrZXlfaWQYAiABKAlCAEgAiAEBQgkKB19rZXlfaWQiPgoUR2V0QXBpUG9saWN5UmVzcG9uc2USJgoGcG9saWN5GAEgASgLMhYuYXV0aC52MS5BcGlQb2xpY3lWaWV3Iu8CCg1BcGlQb2xpY3lTcGVjEg4KBG5hbWUYASABKAlCABIVCgtkZXNjcmlwdGlvbhgCIAEoCUIAEjEKDHNwb3RfbWFya2V0cxgDIAMoCzIbLmF1dGgudjEuU3BvdE1hcmtldFNlbGVjdG9yEjcKEXNwb3RfbWFya2V0X3Njb3BlGAUgASgOMhouYXV0aC52MS5NYXJrZXRTY29wZS5WYWx1ZUIAEigKB2FjdGlvbnMYByADKA4yFS5hdXRoLnYxLlBvbGljeUFjdGlvbkIAEhMKC2lzX3RlbXBsYXRlGBMgASgIOgBKBAgEEAVKBAgGEAdKBAgNEA5KBAgREBJKBAgSEBNSDHBlcnBfbWFya2V0c1IRcGVycF9tYXJrZXRfc2NvcGVSIWRhaWx5X2ludGVybmFsX3RyYW5zZmVyX291dF9saW1pdFIUZGFpbHlfd2l0aGRyYXdfbGltaXRSEm1heF9vcmRlcl9ub3Rpb25hbCJeChZDcmVhdGVBcGlQb2xpY3lSZXF1ZXN0EigKBnBvbGljeRgBIAEoCzIWLmF1dGgudjEuQXBpUG9saWN5U3BlY0IAEhoKEGFzc2lnbl90b19rZXlfaWQYAiABKAlCACJBChdDcmVhdGVBcGlQb2xpY3lSZXNwb25zZRImCgZwb2xpY3kYASABKAsyFi5hdXRoLnYxLkFwaVBvbGljeVZpZXcipwEKFlVwZGF0ZUFwaVBvbGljeVJlcXVlc3QSEwoJcG9saWN5X2lkGAEgASgGQgASKAoGcG9saWN5GAIgASgLMhYuYXV0aC52MS5BcGlQb2xpY3lTcGVjQgASMQoLdXBkYXRlX21hc2sYAyABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQgASGwoRZXhwZWN0ZWRfcmV2aXNpb24YBCABKARCACJBChdVcGRhdGVBcGlQb2xpY3lSZXNwb25zZRImCgZwb2xpY3kYASABKAsyFi5hdXRoLnYxLkFwaVBvbGljeVZpZXciLQoWRGVsZXRlQXBpUG9saWN5UmVxdWVzdBITCglwb2xpY3lfaWQYASABKAZCACIZChdEZWxldGVBcGlQb2xpY3lSZXNwb25zZSI9ChZTZXRBcGlLZXlQb2xpY3lSZXF1ZXN0EhAKBmtleV9pZBgBIAEoCUIAEhEKCXBvbGljeV9pZBgCIAEoBiIZChdTZXRBcGlLZXlQb2xpY3lSZXNwb25zZSrOAgoMUG9saWN5QWN0aW9uEg8KC1VOU1BFQ0lGSUVEEAASDgoKVFJBREVfU1BPVBABEhUKEUlOVEVSTkFMX1RSQU5TRkVSEAMSFQoRRVhURVJOQUxfV0lUSERSQVcQBBIRCg1SRUFEX0JBTEFOQ0VTEAUSDQoJUkVBRF9TUE9UEAYSGwoXUkVBRF9JTlRFUk5BTF9UUkFOU0ZFUlMQCBIVChFSRUFEX0FERFJFU1NfQk9PSxALEhcKE01BTkFHRV9BRERSRVNTX0JPT0sQDCIECAIQAiIECAcQByIECA0QDSIECAkQCSoKVFJBREVfUEVSUCoJUkVBRF9QRVJQKhpSRUFEX1RSQU5TRkVSX0RFU1RJTkFUSU9OUyoaTUFOQUdFX1RSQU5TRkVSX1dISVRFTElTVFMqGVJFQURfRVhURVJOQUxfV0lUSERSQVdBTFMykgkKDVBvbGljeVNlcnZpY2USawoWTGlzdFN1YmFjY291bnRQb2xpY2llcxImLmF1dGgudjEuTGlzdFN1YmFjY291bnRQb2xpY2llc1JlcXVlc3QaJy5hdXRoLnYxLkxpc3RTdWJhY2NvdW50UG9saWNpZXNSZXNwb25zZSIAEmIKE0dldFN1YmFjY291bnRQb2xpY3kSIy5hdXRoLnYxLkdldFN1YmFjY291bnRQb2xpY3lSZXF1ZXN0GiQuYXV0aC52MS5HZXRTdWJhY2NvdW50UG9saWN5UmVzcG9uc2UiABJrChZDcmVhdGVTdWJhY2NvdW50UG9saWN5EiYuYXV0aC52MS5DcmVhdGVTdWJhY2NvdW50UG9saWN5UmVxdWVzdBonLmF1dGgudjEuQ3JlYXRlU3ViYWNjb3VudFBvbGljeVJlc3BvbnNlIgASawoWVXBkYXRlU3ViYWNjb3VudFBvbGljeRImLmF1dGgudjEuVXBkYXRlU3ViYWNjb3VudFBvbGljeVJlcXVlc3QaJy5hdXRoLnYxLlVwZGF0ZVN1YmFjY291bnRQb2xpY3lSZXNwb25zZSIAEmsKFkRlbGV0ZVN1YmFjY291bnRQb2xpY3kSJi5hdXRoLnYxLkRlbGV0ZVN1YmFjY291bnRQb2xpY3lSZXF1ZXN0GicuYXV0aC52MS5EZWxldGVTdWJhY2NvdW50UG9saWN5UmVzcG9uc2UiABJiChNTZXRTdWJhY2NvdW50UG9saWN5EiMuYXV0aC52MS5TZXRTdWJhY2NvdW50UG9saWN5UmVxdWVzdBokLmF1dGgudjEuU2V0U3ViYWNjb3VudFBvbGljeVJlc3BvbnNlIgASVgoPTGlzdEFwaVBvbGljaWVzEh8uYXV0aC52MS5MaXN0QXBpUG9saWNpZXNSZXF1ZXN0GiAuYXV0aC52MS5MaXN0QXBpUG9saWNpZXNSZXNwb25zZSIAEk0KDEdldEFwaVBvbGljeRIcLmF1dGgudjEuR2V0QXBpUG9saWN5UmVxdWVzdBodLmF1dGgudjEuR2V0QXBpUG9saWN5UmVzcG9uc2UiABJWCg9DcmVhdGVBcGlQb2xpY3kSHy5hdXRoLnYxLkNyZWF0ZUFwaVBvbGljeVJlcXVlc3QaIC5hdXRoLnYxLkNyZWF0ZUFwaVBvbGljeVJlc3BvbnNlIgASVgoPVXBkYXRlQXBpUG9saWN5Eh8uYXV0aC52MS5VcGRhdGVBcGlQb2xpY3lSZXF1ZXN0GiAuYXV0aC52MS5VcGRhdGVBcGlQb2xpY3lSZXNwb25zZSIAElYKD0RlbGV0ZUFwaVBvbGljeRIfLmF1dGgudjEuRGVsZXRlQXBpUG9saWN5UmVxdWVzdBogLmF1dGgudjEuRGVsZXRlQXBpUG9saWN5UmVzcG9uc2UiABJWCg9TZXRBcGlLZXlQb2xpY3kSHy5hdXRoLnYxLlNldEFwaUtleVBvbGljeVJlcXVlc3QaIC5hdXRoLnYxLlNldEFwaUtleVBvbGljeVJlc3BvbnNlIgBCPFo6Z2l0aHViLmNvbS9GYWJyaWMtTGFicy9wb2x5ZXN0ZXItc2RrLWdvL2dlbi9hdXRoL3YxO2F1dGh2MWIGcHJvdG8z\", [file_google_protobuf_field_mask, file_google_protobuf_timestamp, file_polyester_api_options]);\n\n/**\n * MarketScope describes how a policy applies to spot markets.\n *\n * @generated from message auth.v1.MarketScope\n */\nexport type MarketScope = Message<\"auth.v1.MarketScope\"> & {\n};\n\n/**\n * Describes the message auth.v1.MarketScope.\n * Use `create(MarketScopeSchema)` to create a new message.\n */\nexport const MarketScopeSchema: GenMessage<MarketScope> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 0);\n\n/**\n * Value is the market-level scope:\n * - ALL: no market-level restriction; new listings are automatically allowed.\n * - ALLOWLIST: only the listed markets are allowed.\n *\n * @generated from enum auth.v1.MarketScope.Value\n */\nexport enum MarketScope_Value {\n /**\n * No scope selected. Create and update requests treat this as ALL.\n *\n * @generated from enum value: UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * Allow all current and future markets for this policy.\n *\n * @generated from enum value: ALL = 1;\n */\n ALL = 1,\n\n /**\n * Allow only the markets listed on this policy.\n *\n * @generated from enum value: ALLOWLIST = 2;\n */\n ALLOWLIST = 2,\n}\n\n/**\n * Describes the enum auth.v1.MarketScope.Value.\n */\nexport const MarketScope_ValueSchema: GenEnum<MarketScope_Value> = /*@__PURE__*/\n enumDesc(file_auth_v1_policies, 0, 0);\n\n/**\n * SpotMarketSelector identifies an allowed spot market in policy mutations.\n *\n * @generated from message auth.v1.SpotMarketSelector\n */\nexport type SpotMarketSelector = Message<\"auth.v1.SpotMarketSelector\"> & {\n /**\n * Stable numeric pair ID from GetSpotConfig.\n *\n * @generated from field: uint32 symbol_id = 1;\n */\n symbolId: number;\n};\n\n/**\n * Describes the message auth.v1.SpotMarketSelector.\n * Use `create(SpotMarketSelectorSchema)` to create a new message.\n */\nexport const SpotMarketSelectorSchema: GenMessage<SpotMarketSelector> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 1);\n\n/**\n * SpotMarketRule describes an allowed spot market in policy views.\n *\n * @generated from message auth.v1.SpotMarketRule\n */\nexport type SpotMarketRule = Message<\"auth.v1.SpotMarketRule\"> & {\n /**\n * Stable numeric pair ID.\n *\n * @generated from field: uint32 symbol_id = 1;\n */\n symbolId: number;\n};\n\n/**\n * Describes the message auth.v1.SpotMarketRule.\n * Use `create(SpotMarketRuleSchema)` to create a new message.\n */\nexport const SpotMarketRuleSchema: GenMessage<SpotMarketRule> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 2);\n\n/**\n * SubaccountPolicyView is the public view of a sub-account policy.\n *\n * @generated from message auth.v1.SubaccountPolicyView\n */\nexport type SubaccountPolicyView = Message<\"auth.v1.SubaccountPolicyView\"> & {\n /**\n * Policy identifier (opaque ID).\n *\n * @generated from field: fixed64 id = 1;\n */\n id: bigint;\n\n /**\n * Human-readable policy name.\n *\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * Optional policy description for dashboards and audits.\n *\n * @generated from field: string description = 3;\n */\n description: string;\n\n /**\n * Allowed spot markets for this sub-account.\n *\n * @generated from field: repeated auth.v1.SpotMarketRule spot_markets = 4;\n */\n spotMarkets: SpotMarketRule[];\n\n /**\n * Market-level scope for spot markets. When ALL, spot_markets is returned\n * for display only and is not enforced.\n *\n * @generated from field: auth.v1.MarketScope.Value spot_market_scope = 6;\n */\n spotMarketScope: MarketScope_Value;\n\n /**\n * Effective high-level actions enabled for the sub-account. Mandatory\n * read-only actions are always included.\n *\n * @generated from field: repeated auth.v1.PolicyAction actions = 8;\n */\n actions: PolicyAction[];\n\n /**\n * True if this policy is a reusable template; false if it is a\n * per-sub-account instance.\n *\n * @generated from field: bool is_template = 10;\n */\n isTemplate: boolean;\n\n /**\n * Optional source template this policy was copied from (opaque ID). This is\n * audit metadata only and does not imply live linkage.\n *\n * @generated from field: fixed64 source_template_id = 11;\n */\n sourceTemplateId: bigint;\n\n /**\n * Maximum notional size allowed for any single order on this sub-account,\n * expressed in canonical quote microunits (one unit is 0.000001 USDT).\n * A value of 0 means \"no explicit cap\".\n *\n * @generated from field: uint64 max_order_notional = 13;\n */\n maxOrderNotional: bigint;\n\n /**\n * Maximum number of resting orders allowed on this sub-account at any time.\n * A value of 0 means \"no explicit cap\".\n *\n * @generated from field: uint32 max_open_orders = 14;\n */\n maxOpenOrders: number;\n\n /**\n * When true, new orders and exposure-increasing order or trigger changes are\n * rejected regardless of other settings. Existing orders and triggers may\n * still be canceled or paused.\n *\n * @generated from field: bool trading_halted = 23;\n */\n tradingHalted: boolean;\n\n /**\n * When true, this policy is write-protected and requires an elevated approval\n * flow to modify it.\n *\n * @generated from field: bool locked = 27;\n */\n locked: boolean;\n\n /**\n * Optional review time in UTC. This is governance metadata and does not\n * automatically disable the policy.\n *\n * @generated from field: google.protobuf.Timestamp review_at = 28;\n */\n reviewAt?: Timestamp | undefined;\n\n /**\n * Optional expiry time in UTC. This is governance metadata and does not\n * automatically disable the policy.\n *\n * @generated from field: google.protobuf.Timestamp expires_at = 29;\n */\n expiresAt?: Timestamp | undefined;\n\n /**\n * Creation time in UTC.\n *\n * @generated from field: google.protobuf.Timestamp created_at = 20;\n */\n createdAt?: Timestamp | undefined;\n\n /**\n * Last update time in UTC.\n *\n * @generated from field: google.protobuf.Timestamp updated_at = 21;\n */\n updatedAt?: Timestamp | undefined;\n\n /**\n * Monotonic resource revision used for conditional updates.\n *\n * @generated from field: uint64 revision = 30;\n */\n revision: bigint;\n};\n\n/**\n * Describes the message auth.v1.SubaccountPolicyView.\n * Use `create(SubaccountPolicyViewSchema)` to create a new message.\n */\nexport const SubaccountPolicyViewSchema: GenMessage<SubaccountPolicyView> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 3);\n\n/**\n * ListSubaccountPoliciesRequest lists the finite set of sub-account policies\n * visible in the requested account scope. Results are sorted by ascending\n * policy ID and are not paginated.\n *\n * @generated from message auth.v1.ListSubaccountPoliciesRequest\n */\nexport type ListSubaccountPoliciesRequest = Message<\"auth.v1.ListSubaccountPoliciesRequest\"> & {\n /**\n * Optional sub-account context for delegated administration. When omitted,\n * only policies owned by the caller's root account are returned.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n};\n\n/**\n * Describes the message auth.v1.ListSubaccountPoliciesRequest.\n * Use `create(ListSubaccountPoliciesRequestSchema)` to create a new message.\n */\nexport const ListSubaccountPoliciesRequestSchema: GenMessage<ListSubaccountPoliciesRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 4);\n\n/**\n * ListSubaccountPoliciesResponse contains sub-account policy templates sorted\n * by ascending policy ID.\n *\n * @generated from message auth.v1.ListSubaccountPoliciesResponse\n */\nexport type ListSubaccountPoliciesResponse = Message<\"auth.v1.ListSubaccountPoliciesResponse\"> & {\n /**\n * Sub-account policy templates visible to the caller.\n *\n * @generated from field: repeated auth.v1.SubaccountPolicyView policies = 1;\n */\n policies: SubaccountPolicyView[];\n};\n\n/**\n * Describes the message auth.v1.ListSubaccountPoliciesResponse.\n * Use `create(ListSubaccountPoliciesResponseSchema)` to create a new message.\n */\nexport const ListSubaccountPoliciesResponseSchema: GenMessage<ListSubaccountPoliciesResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 5);\n\n/**\n * GetSubaccountPolicyRequest fetches one sub-account policy template by ID.\n *\n * @generated from message auth.v1.GetSubaccountPolicyRequest\n */\nexport type GetSubaccountPolicyRequest = Message<\"auth.v1.GetSubaccountPolicyRequest\"> & {\n /**\n * Policy identifier (opaque ID).\n *\n * @generated from field: fixed64 policy_id = 1;\n */\n policyId: bigint;\n\n /**\n * Optional sub-account context for delegated administration. When omitted,\n * the policy must be owned by the caller's root account.\n *\n * @generated from field: optional fixed64 subaccount_id = 2;\n */\n subaccountId?: bigint | undefined;\n};\n\n/**\n * Describes the message auth.v1.GetSubaccountPolicyRequest.\n * Use `create(GetSubaccountPolicyRequestSchema)` to create a new message.\n */\nexport const GetSubaccountPolicyRequestSchema: GenMessage<GetSubaccountPolicyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 6);\n\n/**\n * GetSubaccountPolicyResponse returns the requested sub-account policy.\n *\n * @generated from message auth.v1.GetSubaccountPolicyResponse\n */\nexport type GetSubaccountPolicyResponse = Message<\"auth.v1.GetSubaccountPolicyResponse\"> & {\n /**\n * Matching sub-account policy.\n *\n * @generated from field: auth.v1.SubaccountPolicyView policy = 1;\n */\n policy?: SubaccountPolicyView | undefined;\n};\n\n/**\n * Describes the message auth.v1.GetSubaccountPolicyResponse.\n * Use `create(GetSubaccountPolicyResponseSchema)` to create a new message.\n */\nexport const GetSubaccountPolicyResponseSchema: GenMessage<GetSubaccountPolicyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 7);\n\n/**\n * SubaccountPolicySpec contains the mutable configuration of a sub-account policy.\n *\n * @generated from message auth.v1.SubaccountPolicySpec\n */\nexport type SubaccountPolicySpec = Message<\"auth.v1.SubaccountPolicySpec\"> & {\n /**\n * Human-readable policy name. Create requires a non-empty value; update\n * validates it after merging fields selected by update_mask.\n *\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * Optional policy description for dashboards and audits. Maximum 256 characters.\n *\n * @generated from field: string description = 2;\n */\n description: string;\n\n /**\n * Allowed spot markets for this policy.\n *\n * @generated from field: repeated auth.v1.SpotMarketSelector spot_markets = 3;\n */\n spotMarkets: SpotMarketSelector[];\n\n /**\n * Market-level scope for spot markets. When unspecified, defaults to ALL.\n *\n * @generated from field: auth.v1.MarketScope.Value spot_market_scope = 5;\n */\n spotMarketScope: MarketScope_Value;\n\n /**\n * High-level actions enabled for the sub-account policy. Mandatory read-only\n * actions are included when omitted. Up to 64 unique explicit actions are\n * allowed.\n *\n * @generated from field: repeated auth.v1.PolicyAction actions = 7;\n */\n actions: PolicyAction[];\n\n /**\n * Maximum notional size for any single order on this sub-account, expressed\n * in canonical quote microunits (one unit is 0.000001 USDT). A value of 0\n * means no explicit cap.\n *\n * @generated from field: uint64 max_order_notional = 13;\n */\n maxOrderNotional: bigint;\n\n /**\n * Maximum number of resting orders allowed on this sub-account at any time.\n * A value of 0 means no explicit cap.\n *\n * @generated from field: uint32 max_open_orders = 14;\n */\n maxOpenOrders: number;\n\n /**\n * When true, new orders and exposure-increasing order or trigger changes are\n * rejected regardless of other settings. Existing orders and triggers may\n * still be canceled or paused.\n *\n * @generated from field: bool trading_halted = 21;\n */\n tradingHalted: boolean;\n\n /**\n * When true, the policy is write-protected and requires an elevated mutation path.\n *\n * @generated from field: bool locked = 25;\n */\n locked: boolean;\n\n /**\n * Optional review time in UTC. This does not automatically disable the policy.\n *\n * @generated from field: google.protobuf.Timestamp review_at = 26;\n */\n reviewAt?: Timestamp | undefined;\n\n /**\n * Optional expiry time in UTC. This does not automatically disable the policy.\n *\n * @generated from field: google.protobuf.Timestamp expires_at = 27;\n */\n expiresAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message auth.v1.SubaccountPolicySpec.\n * Use `create(SubaccountPolicySpecSchema)` to create a new message.\n */\nexport const SubaccountPolicySpecSchema: GenMessage<SubaccountPolicySpec> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 8);\n\n/**\n * CreateSubaccountPolicyRequest defines a new sub-account policy template, with\n * an optional attach step for one target sub-account.\n *\n * @generated from message auth.v1.CreateSubaccountPolicyRequest\n */\nexport type CreateSubaccountPolicyRequest = Message<\"auth.v1.CreateSubaccountPolicyRequest\"> & {\n /**\n * Complete mutable policy configuration.\n *\n * @generated from field: auth.v1.SubaccountPolicySpec policy = 1;\n */\n policy?: SubaccountPolicySpec | undefined;\n\n /**\n * Optional target sub-account to attach atomically after creation.\n *\n * @generated from field: optional fixed64 subaccount_id = 2;\n */\n subaccountId?: bigint | undefined;\n};\n\n/**\n * Describes the message auth.v1.CreateSubaccountPolicyRequest.\n * Use `create(CreateSubaccountPolicyRequestSchema)` to create a new message.\n */\nexport const CreateSubaccountPolicyRequestSchema: GenMessage<CreateSubaccountPolicyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 9);\n\n/**\n * CreateSubaccountPolicyResponse returns the created sub-account policy.\n *\n * @generated from message auth.v1.CreateSubaccountPolicyResponse\n */\nexport type CreateSubaccountPolicyResponse = Message<\"auth.v1.CreateSubaccountPolicyResponse\"> & {\n /**\n * Created sub-account policy.\n *\n * @generated from field: auth.v1.SubaccountPolicyView policy = 1;\n */\n policy?: SubaccountPolicyView | undefined;\n};\n\n/**\n * Describes the message auth.v1.CreateSubaccountPolicyResponse.\n * Use `create(CreateSubaccountPolicyResponseSchema)` to create a new message.\n */\nexport const CreateSubaccountPolicyResponseSchema: GenMessage<CreateSubaccountPolicyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 10);\n\n/**\n * UpdateSubaccountPolicyRequest changes selected mutable fields on an existing\n * sub-account policy.\n *\n * @generated from message auth.v1.UpdateSubaccountPolicyRequest\n */\nexport type UpdateSubaccountPolicyRequest = Message<\"auth.v1.UpdateSubaccountPolicyRequest\"> & {\n /**\n * Policy identifier (opaque ID).\n *\n * @generated from field: fixed64 policy_id = 1;\n */\n policyId: bigint;\n\n /**\n * Candidate values for fields selected by update_mask.\n *\n * @generated from field: auth.v1.SubaccountPolicySpec policy = 2;\n */\n policy?: SubaccountPolicySpec | undefined;\n\n /**\n * Mutable fields to apply. Paths are relative to policy. The mask is required,\n * must be non-empty, and cannot contain \"*\".\n *\n * @generated from field: google.protobuf.FieldMask update_mask = 3;\n */\n updateMask?: FieldMask | undefined;\n\n /**\n * Revision returned by the latest successful read. Stale revisions fail with\n * a conflict before no-op detection.\n *\n * @generated from field: uint64 expected_revision = 4;\n */\n expectedRevision: bigint;\n};\n\n/**\n * Describes the message auth.v1.UpdateSubaccountPolicyRequest.\n * Use `create(UpdateSubaccountPolicyRequestSchema)` to create a new message.\n */\nexport const UpdateSubaccountPolicyRequestSchema: GenMessage<UpdateSubaccountPolicyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 11);\n\n/**\n * UpdateSubaccountPolicyResponse returns the updated sub-account policy.\n *\n * @generated from message auth.v1.UpdateSubaccountPolicyResponse\n */\nexport type UpdateSubaccountPolicyResponse = Message<\"auth.v1.UpdateSubaccountPolicyResponse\"> & {\n /**\n * Updated sub-account policy.\n *\n * @generated from field: auth.v1.SubaccountPolicyView policy = 1;\n */\n policy?: SubaccountPolicyView | undefined;\n};\n\n/**\n * Describes the message auth.v1.UpdateSubaccountPolicyResponse.\n * Use `create(UpdateSubaccountPolicyResponseSchema)` to create a new message.\n */\nexport const UpdateSubaccountPolicyResponseSchema: GenMessage<UpdateSubaccountPolicyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 12);\n\n/**\n * DeleteSubaccountPolicyRequest deletes a sub-account policy template when it\n * is not in use.\n *\n * @generated from message auth.v1.DeleteSubaccountPolicyRequest\n */\nexport type DeleteSubaccountPolicyRequest = Message<\"auth.v1.DeleteSubaccountPolicyRequest\"> & {\n /**\n * Policy identifier (opaque ID).\n *\n * @generated from field: fixed64 policy_id = 1;\n */\n policyId: bigint;\n};\n\n/**\n * Describes the message auth.v1.DeleteSubaccountPolicyRequest.\n * Use `create(DeleteSubaccountPolicyRequestSchema)` to create a new message.\n */\nexport const DeleteSubaccountPolicyRequestSchema: GenMessage<DeleteSubaccountPolicyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 13);\n\n/**\n * DeleteSubaccountPolicyResponse is empty when the delete succeeds.\n *\n * @generated from message auth.v1.DeleteSubaccountPolicyResponse\n */\nexport type DeleteSubaccountPolicyResponse = Message<\"auth.v1.DeleteSubaccountPolicyResponse\"> & {\n};\n\n/**\n * Describes the message auth.v1.DeleteSubaccountPolicyResponse.\n * Use `create(DeleteSubaccountPolicyResponseSchema)` to create a new message.\n */\nexport const DeleteSubaccountPolicyResponseSchema: GenMessage<DeleteSubaccountPolicyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 14);\n\n/**\n * SetSubaccountPolicyRequest attaches or clears a policy template on a\n * sub-account.\n *\n * @generated from message auth.v1.SetSubaccountPolicyRequest\n */\nexport type SetSubaccountPolicyRequest = Message<\"auth.v1.SetSubaccountPolicyRequest\"> & {\n /**\n * Sub-account identifier (opaque ID).\n *\n * @generated from field: fixed64 subaccount_id = 1;\n */\n subaccountId: bigint;\n\n /**\n * Policy template to attach (opaque ID). A value of 0 clears the explicit\n * binding and restores the system Read Only policy.\n *\n * @generated from field: fixed64 policy_id = 2;\n */\n policyId: bigint;\n};\n\n/**\n * Describes the message auth.v1.SetSubaccountPolicyRequest.\n * Use `create(SetSubaccountPolicyRequestSchema)` to create a new message.\n */\nexport const SetSubaccountPolicyRequestSchema: GenMessage<SetSubaccountPolicyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 15);\n\n/**\n * SetSubaccountPolicyResponse is empty when the policy binding succeeds.\n *\n * @generated from message auth.v1.SetSubaccountPolicyResponse\n */\nexport type SetSubaccountPolicyResponse = Message<\"auth.v1.SetSubaccountPolicyResponse\"> & {\n};\n\n/**\n * Describes the message auth.v1.SetSubaccountPolicyResponse.\n * Use `create(SetSubaccountPolicyResponseSchema)` to create a new message.\n */\nexport const SetSubaccountPolicyResponseSchema: GenMessage<SetSubaccountPolicyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 16);\n\n/**\n * ApiPolicyView is the public view of an API key policy template. Its action\n * and spot-market floor cannot exceed an attached sub-account policy.\n *\n * @generated from message auth.v1.ApiPolicyView\n */\nexport type ApiPolicyView = Message<\"auth.v1.ApiPolicyView\"> & {\n /**\n * Policy identifier (opaque ID).\n *\n * @generated from field: fixed64 id = 1;\n */\n id: bigint;\n\n /**\n * Human-readable policy name.\n *\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * Optional policy description for dashboards and audits.\n *\n * @generated from field: string description = 3;\n */\n description: string;\n\n /**\n * Allowed spot markets for this API key policy.\n *\n * @generated from field: repeated auth.v1.SpotMarketRule spot_markets = 4;\n */\n spotMarkets: SpotMarketRule[];\n\n /**\n * High-level actions enabled for this API key. Up to 64 unique explicit\n * actions may be returned.\n *\n * @generated from field: repeated auth.v1.PolicyAction actions = 6;\n */\n actions: PolicyAction[];\n\n /**\n * Market-level scope for spot markets. When ALL, spot_markets is returned\n * for display only and is not enforced.\n *\n * --- Template / lifecycle metadata ---\n *\n * @generated from field: auth.v1.MarketScope.Value spot_market_scope = 7;\n */\n spotMarketScope: MarketScope_Value;\n\n /**\n * When true, this policy is intended to be reused as a template across\n * multiple API keys. When false, it represents a single-key instance.\n *\n * @generated from field: bool is_template = 19;\n */\n isTemplate: boolean;\n\n /**\n * Optional source template this policy was copied from (opaque ID). This is\n * audit metadata only and does not imply live linkage.\n *\n * @generated from field: fixed64 source_template_id = 20;\n */\n sourceTemplateId: bigint;\n\n /**\n * Creation time in UTC.\n *\n * @generated from field: google.protobuf.Timestamp created_at = 21;\n */\n createdAt?: Timestamp | undefined;\n\n /**\n * Last update time in UTC.\n *\n * @generated from field: google.protobuf.Timestamp updated_at = 22;\n */\n updatedAt?: Timestamp | undefined;\n\n /**\n * Monotonic resource revision used for conditional updates.\n *\n * @generated from field: uint64 revision = 23;\n */\n revision: bigint;\n};\n\n/**\n * Describes the message auth.v1.ApiPolicyView.\n * Use `create(ApiPolicyViewSchema)` to create a new message.\n */\nexport const ApiPolicyViewSchema: GenMessage<ApiPolicyView> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 17);\n\n/**\n * ListApiPoliciesRequest lists the finite set of API key policies visible in\n * the requested account scope. Results are sorted by ascending policy ID and\n * are not paginated.\n *\n * @generated from message auth.v1.ListApiPoliciesRequest\n */\nexport type ListApiPoliciesRequest = Message<\"auth.v1.ListApiPoliciesRequest\"> & {\n /**\n * Optional API key context for delegated administration. When omitted, only\n * policies owned by the caller's root account are returned.\n *\n * @generated from field: optional string key_id = 1;\n */\n keyId?: string | undefined;\n};\n\n/**\n * Describes the message auth.v1.ListApiPoliciesRequest.\n * Use `create(ListApiPoliciesRequestSchema)` to create a new message.\n */\nexport const ListApiPoliciesRequestSchema: GenMessage<ListApiPoliciesRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 18);\n\n/**\n * ListApiPoliciesResponse contains API key policy templates sorted by ascending\n * policy ID.\n *\n * @generated from message auth.v1.ListApiPoliciesResponse\n */\nexport type ListApiPoliciesResponse = Message<\"auth.v1.ListApiPoliciesResponse\"> & {\n /**\n * API key policy templates visible to the caller.\n *\n * @generated from field: repeated auth.v1.ApiPolicyView policies = 1;\n */\n policies: ApiPolicyView[];\n};\n\n/**\n * Describes the message auth.v1.ListApiPoliciesResponse.\n * Use `create(ListApiPoliciesResponseSchema)` to create a new message.\n */\nexport const ListApiPoliciesResponseSchema: GenMessage<ListApiPoliciesResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 19);\n\n/**\n * GetApiPolicyRequest fetches one API key policy template by ID.\n *\n * @generated from message auth.v1.GetApiPolicyRequest\n */\nexport type GetApiPolicyRequest = Message<\"auth.v1.GetApiPolicyRequest\"> & {\n /**\n * Policy identifier (opaque ID).\n *\n * @generated from field: fixed64 policy_id = 1;\n */\n policyId: bigint;\n\n /**\n * Optional API key context for delegated administration. When omitted, the\n * policy must be owned by the caller's root account.\n *\n * @generated from field: optional string key_id = 2;\n */\n keyId?: string | undefined;\n};\n\n/**\n * Describes the message auth.v1.GetApiPolicyRequest.\n * Use `create(GetApiPolicyRequestSchema)` to create a new message.\n */\nexport const GetApiPolicyRequestSchema: GenMessage<GetApiPolicyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 20);\n\n/**\n * GetApiPolicyResponse returns the requested API key policy.\n *\n * @generated from message auth.v1.GetApiPolicyResponse\n */\nexport type GetApiPolicyResponse = Message<\"auth.v1.GetApiPolicyResponse\"> & {\n /**\n * Matching API key policy.\n *\n * @generated from field: auth.v1.ApiPolicyView policy = 1;\n */\n policy?: ApiPolicyView | undefined;\n};\n\n/**\n * Describes the message auth.v1.GetApiPolicyResponse.\n * Use `create(GetApiPolicyResponseSchema)` to create a new message.\n */\nexport const GetApiPolicyResponseSchema: GenMessage<GetApiPolicyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 21);\n\n/**\n * ApiPolicySpec contains the mutable configuration of an API key policy.\n *\n * @generated from message auth.v1.ApiPolicySpec\n */\nexport type ApiPolicySpec = Message<\"auth.v1.ApiPolicySpec\"> & {\n /**\n * Human-readable policy name. Create requires a non-empty value; update\n * validates it after merging fields selected by update_mask.\n *\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * Optional policy description for dashboards and audits. Maximum 256 characters.\n *\n * @generated from field: string description = 2;\n */\n description: string;\n\n /**\n * Allowed spot markets for this API key policy.\n *\n * @generated from field: repeated auth.v1.SpotMarketSelector spot_markets = 3;\n */\n spotMarkets: SpotMarketSelector[];\n\n /**\n * Market-level scope for spot markets. When unspecified, defaults to ALL.\n *\n * @generated from field: auth.v1.MarketScope.Value spot_market_scope = 5;\n */\n spotMarketScope: MarketScope_Value;\n\n /**\n * High-level actions enabled for the API key policy. An empty list grants no\n * access. Up to 64 unique explicit actions are allowed.\n *\n * @generated from field: repeated auth.v1.PolicyAction actions = 7;\n */\n actions: PolicyAction[];\n\n /**\n * Whether this policy should be treated as a reusable template.\n *\n * @generated from field: bool is_template = 19;\n */\n isTemplate: boolean;\n};\n\n/**\n * Describes the message auth.v1.ApiPolicySpec.\n * Use `create(ApiPolicySpecSchema)` to create a new message.\n */\nexport const ApiPolicySpecSchema: GenMessage<ApiPolicySpec> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 22);\n\n/**\n * CreateApiPolicyRequest defines a new API key policy template.\n *\n * @generated from message auth.v1.CreateApiPolicyRequest\n */\nexport type CreateApiPolicyRequest = Message<\"auth.v1.CreateApiPolicyRequest\"> & {\n /**\n * Complete mutable policy configuration.\n *\n * @generated from field: auth.v1.ApiPolicySpec policy = 1;\n */\n policy?: ApiPolicySpec | undefined;\n\n /**\n * Optional API key identifier to bind this newly-created policy to\n * atomically. When set, the caller must be allowed to manage the key and the\n * create+assign operation consumes a single fresh step-up proof.\n *\n * @generated from field: string assign_to_key_id = 2;\n */\n assignToKeyId: string;\n};\n\n/**\n * Describes the message auth.v1.CreateApiPolicyRequest.\n * Use `create(CreateApiPolicyRequestSchema)` to create a new message.\n */\nexport const CreateApiPolicyRequestSchema: GenMessage<CreateApiPolicyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 23);\n\n/**\n * CreateApiPolicyResponse returns the created API key policy.\n *\n * @generated from message auth.v1.CreateApiPolicyResponse\n */\nexport type CreateApiPolicyResponse = Message<\"auth.v1.CreateApiPolicyResponse\"> & {\n /**\n * Created API key policy.\n *\n * @generated from field: auth.v1.ApiPolicyView policy = 1;\n */\n policy?: ApiPolicyView | undefined;\n};\n\n/**\n * Describes the message auth.v1.CreateApiPolicyResponse.\n * Use `create(CreateApiPolicyResponseSchema)` to create a new message.\n */\nexport const CreateApiPolicyResponseSchema: GenMessage<CreateApiPolicyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 24);\n\n/**\n * UpdateApiPolicyRequest changes selected mutable fields on an existing API\n * key policy.\n *\n * @generated from message auth.v1.UpdateApiPolicyRequest\n */\nexport type UpdateApiPolicyRequest = Message<\"auth.v1.UpdateApiPolicyRequest\"> & {\n /**\n * Policy identifier (opaque ID).\n *\n * @generated from field: fixed64 policy_id = 1;\n */\n policyId: bigint;\n\n /**\n * Candidate values for fields selected by update_mask.\n *\n * @generated from field: auth.v1.ApiPolicySpec policy = 2;\n */\n policy?: ApiPolicySpec | undefined;\n\n /**\n * Mutable fields to apply. Paths are relative to policy. The mask is required,\n * must be non-empty, and cannot contain \"*\".\n *\n * @generated from field: google.protobuf.FieldMask update_mask = 3;\n */\n updateMask?: FieldMask | undefined;\n\n /**\n * Revision returned by the latest successful read. Stale revisions fail with\n * a conflict before no-op detection.\n *\n * @generated from field: uint64 expected_revision = 4;\n */\n expectedRevision: bigint;\n};\n\n/**\n * Describes the message auth.v1.UpdateApiPolicyRequest.\n * Use `create(UpdateApiPolicyRequestSchema)` to create a new message.\n */\nexport const UpdateApiPolicyRequestSchema: GenMessage<UpdateApiPolicyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 25);\n\n/**\n * UpdateApiPolicyResponse returns the updated API key policy.\n *\n * @generated from message auth.v1.UpdateApiPolicyResponse\n */\nexport type UpdateApiPolicyResponse = Message<\"auth.v1.UpdateApiPolicyResponse\"> & {\n /**\n * Updated API key policy.\n *\n * @generated from field: auth.v1.ApiPolicyView policy = 1;\n */\n policy?: ApiPolicyView | undefined;\n};\n\n/**\n * Describes the message auth.v1.UpdateApiPolicyResponse.\n * Use `create(UpdateApiPolicyResponseSchema)` to create a new message.\n */\nexport const UpdateApiPolicyResponseSchema: GenMessage<UpdateApiPolicyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 26);\n\n/**\n * DeleteApiPolicyRequest deletes an API key policy template when it is not in use.\n *\n * @generated from message auth.v1.DeleteApiPolicyRequest\n */\nexport type DeleteApiPolicyRequest = Message<\"auth.v1.DeleteApiPolicyRequest\"> & {\n /**\n * Policy identifier (opaque ID).\n *\n * @generated from field: fixed64 policy_id = 1;\n */\n policyId: bigint;\n};\n\n/**\n * Describes the message auth.v1.DeleteApiPolicyRequest.\n * Use `create(DeleteApiPolicyRequestSchema)` to create a new message.\n */\nexport const DeleteApiPolicyRequestSchema: GenMessage<DeleteApiPolicyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 27);\n\n/**\n * DeleteApiPolicyResponse is empty when the delete succeeds.\n *\n * @generated from message auth.v1.DeleteApiPolicyResponse\n */\nexport type DeleteApiPolicyResponse = Message<\"auth.v1.DeleteApiPolicyResponse\"> & {\n};\n\n/**\n * Describes the message auth.v1.DeleteApiPolicyResponse.\n * Use `create(DeleteApiPolicyResponseSchema)` to create a new message.\n */\nexport const DeleteApiPolicyResponseSchema: GenMessage<DeleteApiPolicyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 28);\n\n/**\n * SetApiKeyPolicyRequest attaches or clears a policy template on an API key.\n *\n * @generated from message auth.v1.SetApiKeyPolicyRequest\n */\nexport type SetApiKeyPolicyRequest = Message<\"auth.v1.SetApiKeyPolicyRequest\"> & {\n /**\n * Opaque API key identifier, formatted as \"ak_\" followed by 32 lowercase hex\n * characters.\n *\n * @generated from field: string key_id = 1;\n */\n keyId: string;\n\n /**\n * Policy template to attach (opaque ID). A value of 0 clears the binding.\n * An API key without an attached policy has no permissions.\n *\n * @generated from field: fixed64 policy_id = 2;\n */\n policyId: bigint;\n};\n\n/**\n * Describes the message auth.v1.SetApiKeyPolicyRequest.\n * Use `create(SetApiKeyPolicyRequestSchema)` to create a new message.\n */\nexport const SetApiKeyPolicyRequestSchema: GenMessage<SetApiKeyPolicyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 29);\n\n/**\n * SetApiKeyPolicyResponse is empty when the policy binding succeeds.\n *\n * @generated from message auth.v1.SetApiKeyPolicyResponse\n */\nexport type SetApiKeyPolicyResponse = Message<\"auth.v1.SetApiKeyPolicyResponse\"> & {\n};\n\n/**\n * Describes the message auth.v1.SetApiKeyPolicyResponse.\n * Use `create(SetApiKeyPolicyResponseSchema)` to create a new message.\n */\nexport const SetApiKeyPolicyResponseSchema: GenMessage<SetApiKeyPolicyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 30);\n\n/**\n * PolicyAction is a high-level permission that can be granted by a policy.\n * Write-style actions also grant the matching read visibility where needed by\n * the product experience.\n *\n * @generated from enum auth.v1.PolicyAction\n */\nexport enum PolicyAction {\n /**\n * No policy action selected. An empty API-key action list grants no access;\n * sub-account policies retain their mandatory read-only actions.\n *\n * @generated from enum value: UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * Allow placing and modifying spot orders and triggers, including reading\n * spot orders and trades. Cancellation and pausing remain available as\n * safety actions.\n *\n * @generated from enum value: TRADE_SPOT = 1;\n */\n TRADE_SPOT = 1,\n\n /**\n * Allow internal transfers between sub-accounts or linked Polyester accounts,\n * including reading internal transfer history.\n *\n * @generated from enum value: INTERNAL_TRANSFER = 3;\n */\n INTERNAL_TRANSFER = 3,\n\n /**\n * Allow value to leave Trading through external withdrawals. Destination\n * authorization is enforced separately from this policy.\n *\n * @generated from enum value: EXTERNAL_WITHDRAW = 4;\n */\n EXTERNAL_WITHDRAW = 4,\n\n /**\n * Allow reading balances and equity for a sub-account or API key.\n *\n * @generated from enum value: READ_BALANCES = 5;\n */\n READ_BALANCES = 5,\n\n /**\n * Allow reading spot orders and trades (no write).\n *\n * @generated from enum value: READ_SPOT = 6;\n */\n READ_SPOT = 6,\n\n /**\n * Allow reading internal transfer history.\n *\n * @generated from enum value: READ_INTERNAL_TRANSFERS = 8;\n */\n READ_INTERNAL_TRANSFERS = 8,\n\n /**\n * Allow reading saved, recent, and whitelisted address-book destinations.\n *\n * @generated from enum value: READ_ADDRESS_BOOK = 11;\n */\n READ_ADDRESS_BOOK = 11,\n\n /**\n * Allow creating, updating, deleting, and copying saved destination entries,\n * including reading the address book.\n *\n * @generated from enum value: MANAGE_ADDRESS_BOOK = 12;\n */\n MANAGE_ADDRESS_BOOK = 12,\n}\n\n/**\n * Describes the enum auth.v1.PolicyAction.\n */\nexport const PolicyActionSchema: GenEnum<PolicyAction> = /*@__PURE__*/\n enumDesc(file_auth_v1_policies, 0);\n\n/**\n * PolicyService manages sub-account and API key policy templates and bindings.\n *\n * @generated from service auth.v1.PolicyService\n */\nexport const PolicyService: GenService<{\n /**\n * List sub-account policy templates available to the caller.\n *\n * @generated from rpc auth.v1.PolicyService.ListSubaccountPolicies\n */\n listSubaccountPolicies: {\n methodKind: \"unary\";\n input: typeof ListSubaccountPoliciesRequestSchema;\n output: typeof ListSubaccountPoliciesResponseSchema;\n },\n /**\n * Get a sub-account policy template by id.\n *\n * @generated from rpc auth.v1.PolicyService.GetSubaccountPolicy\n */\n getSubaccountPolicy: {\n methodKind: \"unary\";\n input: typeof GetSubaccountPolicyRequestSchema;\n output: typeof GetSubaccountPolicyResponseSchema;\n },\n /**\n * Create a new sub-account policy template (optionally attach to a sub-account).\n *\n * @generated from rpc auth.v1.PolicyService.CreateSubaccountPolicy\n */\n createSubaccountPolicy: {\n methodKind: \"unary\";\n input: typeof CreateSubaccountPolicyRequestSchema;\n output: typeof CreateSubaccountPolicyResponseSchema;\n },\n /**\n * Change selected fields on an existing sub-account policy template.\n *\n * @generated from rpc auth.v1.PolicyService.UpdateSubaccountPolicy\n */\n updateSubaccountPolicy: {\n methodKind: \"unary\";\n input: typeof UpdateSubaccountPolicyRequestSchema;\n output: typeof UpdateSubaccountPolicyResponseSchema;\n },\n /**\n * Delete a sub-account policy template.\n *\n * @generated from rpc auth.v1.PolicyService.DeleteSubaccountPolicy\n */\n deleteSubaccountPolicy: {\n methodKind: \"unary\";\n input: typeof DeleteSubaccountPolicyRequestSchema;\n output: typeof DeleteSubaccountPolicyResponseSchema;\n },\n /**\n * Attach or clear a sub-account policy for a sub-account.\n *\n * @generated from rpc auth.v1.PolicyService.SetSubaccountPolicy\n */\n setSubaccountPolicy: {\n methodKind: \"unary\";\n input: typeof SetSubaccountPolicyRequestSchema;\n output: typeof SetSubaccountPolicyResponseSchema;\n },\n /**\n * List API key policy templates available to the caller.\n *\n * @generated from rpc auth.v1.PolicyService.ListApiPolicies\n */\n listApiPolicies: {\n methodKind: \"unary\";\n input: typeof ListApiPoliciesRequestSchema;\n output: typeof ListApiPoliciesResponseSchema;\n },\n /**\n * Get an API key policy template by id.\n *\n * @generated from rpc auth.v1.PolicyService.GetApiPolicy\n */\n getApiPolicy: {\n methodKind: \"unary\";\n input: typeof GetApiPolicyRequestSchema;\n output: typeof GetApiPolicyResponseSchema;\n },\n /**\n * Create a new API key policy template.\n *\n * @generated from rpc auth.v1.PolicyService.CreateApiPolicy\n */\n createApiPolicy: {\n methodKind: \"unary\";\n input: typeof CreateApiPolicyRequestSchema;\n output: typeof CreateApiPolicyResponseSchema;\n },\n /**\n * Change selected fields on an existing API key policy template.\n *\n * @generated from rpc auth.v1.PolicyService.UpdateApiPolicy\n */\n updateApiPolicy: {\n methodKind: \"unary\";\n input: typeof UpdateApiPolicyRequestSchema;\n output: typeof UpdateApiPolicyResponseSchema;\n },\n /**\n * Delete an API key policy template.\n *\n * @generated from rpc auth.v1.PolicyService.DeleteApiPolicy\n */\n deleteApiPolicy: {\n methodKind: \"unary\";\n input: typeof DeleteApiPolicyRequestSchema;\n output: typeof DeleteApiPolicyResponseSchema;\n },\n /**\n * Attach or clear an API key policy for a key.\n *\n * @generated from rpc auth.v1.PolicyService.SetApiKeyPolicy\n */\n setApiKeyPolicy: {\n methodKind: \"unary\";\n input: typeof SetApiKeyPolicyRequestSchema;\n output: typeof SetApiKeyPolicyResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_auth_v1_policies, 0);\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,MAAa,wBACX,uBAAS,g7PAAg7P;CAAC;CAAiC;CAAgC;AAA0B,CAAC;;;;;AAcxhQ,MAAa,oBACX,0BAAY,uBAAuB,CAAC;;;;;;;;AAStC,IAAY,oBAAL,yBAAA,mBAAA;;;;;;CAML,kBAAA,kBAAA,iBAAA,KAAA;;;;;;CAOA,kBAAA,kBAAA,SAAA,KAAA;;;;;;CAOA,kBAAA,kBAAA,eAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,0BACX,uBAAS,uBAAuB,GAAG,CAAC;;;;;AAoBtC,MAAa,2BACX,0BAAY,uBAAuB,CAAC;;;;;AAoBtC,MAAa,uBACX,0BAAY,uBAAuB,CAAC;;;;;AAgJtC,MAAa,6BACX,0BAAY,uBAAuB,CAAC;;;;;AAuBtC,MAAa,sCACX,0BAAY,uBAAuB,CAAC;;;;;AAqBtC,MAAa,uCACX,0BAAY,uBAAuB,CAAC;;;;;AA4BtC,MAAa,mCACX,0BAAY,uBAAuB,CAAC;;;;;AAoBtC,MAAa,oCACX,0BAAY,uBAAuB,CAAC;;;;;AAkGtC,MAAa,6BACX,0BAAY,uBAAuB,CAAC;;;;;AA4BtC,MAAa,sCACX,0BAAY,uBAAuB,CAAC;;;;;AAoBtC,MAAa,uCACX,0BAAY,uBAAuB,EAAE;;;;;AA4CvC,MAAa,sCACX,0BAAY,uBAAuB,EAAE;;;;;AAoBvC,MAAa,uCACX,0BAAY,uBAAuB,EAAE;;;;;AAqBvC,MAAa,sCACX,0BAAY,uBAAuB,EAAE;;;;;AAcvC,MAAa,uCACX,0BAAY,uBAAuB,EAAE;;;;;AA6BvC,MAAa,mCACX,0BAAY,uBAAuB,EAAE;;;;;AAcvC,MAAa,oCACX,0BAAY,uBAAuB,EAAE;;;;;AAiGvC,MAAa,sBACX,0BAAY,uBAAuB,EAAE;;;;;AAuBvC,MAAa,+BACX,0BAAY,uBAAuB,EAAE;;;;;AAqBvC,MAAa,gCACX,0BAAY,uBAAuB,EAAE;;;;;AA4BvC,MAAa,4BACX,0BAAY,uBAAuB,EAAE;;;;;AAoBvC,MAAa,6BACX,0BAAY,uBAAuB,EAAE;;;;;AAyDvC,MAAa,sBACX,0BAAY,uBAAuB,EAAE;;;;;AA6BvC,MAAa,+BACX,0BAAY,uBAAuB,EAAE;;;;;AAoBvC,MAAa,gCACX,0BAAY,uBAAuB,EAAE;;;;;AA4CvC,MAAa,+BACX,0BAAY,uBAAuB,EAAE;;;;;AAoBvC,MAAa,gCACX,0BAAY,uBAAuB,EAAE;;;;;AAoBvC,MAAa,+BACX,0BAAY,uBAAuB,EAAE;;;;;AAcvC,MAAa,gCACX,0BAAY,uBAAuB,EAAE;;;;;AA6BvC,MAAa,+BACX,0BAAY,uBAAuB,EAAE;;;;;AAcvC,MAAa,gCACX,0BAAY,uBAAuB,EAAE;;;;;;;;AASvC,IAAY,eAAL,yBAAA,cAAA;;;;;;;CAOL,aAAA,aAAA,iBAAA,KAAA;;;;;;;;CASA,aAAA,aAAA,gBAAA,KAAA;;;;;;;CAQA,aAAA,aAAA,uBAAA,KAAA;;;;;;;CAQA,aAAA,aAAA,uBAAA,KAAA;;;;;;CAOA,aAAA,aAAA,mBAAA,KAAA;;;;;;CAOA,aAAA,aAAA,eAAA,KAAA;;;;;;CAOA,aAAA,aAAA,6BAAA,KAAA;;;;;;CAOA,aAAA,aAAA,uBAAA,MAAA;;;;;;;CAQA,aAAA,aAAA,yBAAA,MAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,qBACX,uBAAS,uBAAuB,CAAC;;;;;;AAOnC,MAAa,gBA0HX,0BAAY,uBAAuB,CAAC"}
1
+ {"version":3,"file":"policies_pb.js","names":[],"sources":["../../../../src/gen/auth/v1/policies_pb.ts"],"sourcesContent":["// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file auth/v1/policies.proto (package auth.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 { FieldMask, Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_field_mask, file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_polyester_api_options } from \"../../polyester/api/options_pb.js\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file auth/v1/policies.proto.\n */\nexport const file_auth_v1_policies: GenFile = /*@__PURE__*/\n fileDesc(\"ChZhdXRoL3YxL3BvbGljaWVzLnByb3RvEgdhdXRoLnYxIj8KC01hcmtldFNjb3BlIjAKBVZhbHVlEg8KC1VOU1BFQ0lGSUVEEAASBwoDQUxMEAESDQoJQUxMT1dMSVNUEAIiKQoSU3BvdE1hcmtldFNlbGVjdG9yEhMKCXN5bWJvbF9pZBgBIAEoDUIAIiMKDlNwb3RNYXJrZXRSdWxlEhEKCXN5bWJvbF9pZBgBIAEoDSLvBgoUU3ViYWNjb3VudFBvbGljeVZpZXcSCgoCaWQYASABKAYSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRItCgxzcG90X21hcmtldHMYBCADKAsyFy5hdXRoLnYxLlNwb3RNYXJrZXRSdWxlEjcKEXNwb3RfbWFya2V0X3Njb3BlGAYgASgOMhouYXV0aC52MS5NYXJrZXRTY29wZS5WYWx1ZUIAEigKB2FjdGlvbnMYCCADKA4yFS5hdXRoLnYxLlBvbGljeUFjdGlvbkIAEhMKC2lzX3RlbXBsYXRlGAogASgIEhoKEnNvdXJjZV90ZW1wbGF0ZV9pZBgLIAEoBhIaChJtYXhfb3JkZXJfbm90aW9uYWwYDSABKAQSFwoPbWF4X29wZW5fb3JkZXJzGA4gASgNEhYKDnRyYWRpbmdfaGFsdGVkGBcgASgIEg4KBmxvY2tlZBgbIAEoCBItCglyZXZpZXdfYXQYHCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmV4cGlyZXNfYXQYHSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmNyZWF0ZWRfYXQYFCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYFSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhAKCHJldmlzaW9uGB4gASgESgQIBRAGSgQIBxAISgQIDBANSgQIDxAUSgQIFhAXSgQIGBAbUgxwZXJwX21hcmtldHNSEXBlcnBfbWFya2V0X3Njb3BlUhNnbG9iYWxfbm90aW9uYWxfY2FwUhJtYXhfb3Blbl9wb3NpdGlvbnNSFmdsb2JhbF9wZXJwX2xldmVyYWdlX3hSIWRhaWx5X2ludGVybmFsX3RyYW5zZmVyX291dF9saW1pdFIUZGFpbHlfd2l0aGRyYXdfbGltaXRSG2ludGVybmFsX3RyYW5zZmVyc19vd25fb25seVIaZW5mb3JjZV93aXRoZHJhd193aGl0ZWxpc3RSEGxpcXVpZGF0aW9uX29ubHlSEGRhaWx5X2xvc3NfbGltaXRSG2ludHJhZGF5X2RyYXdkb3duX2xpbWl0X2JwcyJPCh1MaXN0U3ViYWNjb3VudFBvbGljaWVzUmVxdWVzdBIcCg1zdWJhY2NvdW50X2lkGAEgASgGQgBIAIgBAUIQCg5fc3ViYWNjb3VudF9pZCJRCh5MaXN0U3ViYWNjb3VudFBvbGljaWVzUmVzcG9uc2USLwoIcG9saWNpZXMYASADKAsyHS5hdXRoLnYxLlN1YmFjY291bnRQb2xpY3lWaWV3ImEKGkdldFN1YmFjY291bnRQb2xpY3lSZXF1ZXN0EhMKCXBvbGljeV9pZBgBIAEoBkIAEhwKDXN1YmFjY291bnRfaWQYAiABKAZCAEgAiAEBQhAKDl9zdWJhY2NvdW50X2lkIkwKG0dldFN1YmFjY291bnRQb2xpY3lSZXNwb25zZRItCgZwb2xpY3kYASABKAsyHS5hdXRoLnYxLlN1YmFjY291bnRQb2xpY3lWaWV3IsQFChRTdWJhY2NvdW50UG9saWN5U3BlYxIOCgRuYW1lGAEgASgJQgASFQoLZGVzY3JpcHRpb24YAiABKAlCABIxCgxzcG90X21hcmtldHMYAyADKAsyGy5hdXRoLnYxLlNwb3RNYXJrZXRTZWxlY3RvchI3ChFzcG90X21hcmtldF9zY29wZRgFIAEoDjIaLmF1dGgudjEuTWFya2V0U2NvcGUuVmFsdWVCABIoCgdhY3Rpb25zGAcgAygOMhUuYXV0aC52MS5Qb2xpY3lBY3Rpb25CABIaChJtYXhfb3JkZXJfbm90aW9uYWwYDSABKAQSFwoPbWF4X29wZW5fb3JkZXJzGA4gASgNEhYKDnRyYWRpbmdfaGFsdGVkGBUgASgIEg4KBmxvY2tlZBgZIAEoCBItCglyZXZpZXdfYXQYGiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmV4cGlyZXNfYXQYGyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wOgBKBAgEEAVKBAgGEAdKBAgMEA1KBAgPEBVKBAgWEBlSDHBlcnBfbWFya2V0c1IRcGVycF9tYXJrZXRfc2NvcGVSE2dsb2JhbF9ub3Rpb25hbF9jYXBSEm1heF9vcGVuX3Bvc2l0aW9uc1IWZ2xvYmFsX3BlcnBfbGV2ZXJhZ2VfeFIhZGFpbHlfaW50ZXJuYWxfdHJhbnNmZXJfb3V0X2xpbWl0UhRkYWlseV93aXRoZHJhd19saW1pdFIbaW50ZXJuYWxfdHJhbnNmZXJzX293bl9vbmx5UhplbmZvcmNlX3dpdGhkcmF3X3doaXRlbGlzdFIQbGlxdWlkYXRpb25fb25seVIQZGFpbHlfbG9zc19saW1pdFIbaW50cmFkYXlfZHJhd2Rvd25fbGltaXRfYnBzIoABCh1DcmVhdGVTdWJhY2NvdW50UG9saWN5UmVxdWVzdBIvCgZwb2xpY3kYASABKAsyHS5hdXRoLnYxLlN1YmFjY291bnRQb2xpY3lTcGVjQgASHAoNc3ViYWNjb3VudF9pZBgCIAEoBkIASACIAQFCEAoOX3N1YmFjY291bnRfaWQiTwoeQ3JlYXRlU3ViYWNjb3VudFBvbGljeVJlc3BvbnNlEi0KBnBvbGljeRgBIAEoCzIdLmF1dGgudjEuU3ViYWNjb3VudFBvbGljeVZpZXcitQEKHVVwZGF0ZVN1YmFjY291bnRQb2xpY3lSZXF1ZXN0EhMKCXBvbGljeV9pZBgBIAEoBkIAEi8KBnBvbGljeRgCIAEoCzIdLmF1dGgudjEuU3ViYWNjb3VudFBvbGljeVNwZWNCABIxCgt1cGRhdGVfbWFzaxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCABIbChFleHBlY3RlZF9yZXZpc2lvbhgEIAEoBEIAIk8KHlVwZGF0ZVN1YmFjY291bnRQb2xpY3lSZXNwb25zZRItCgZwb2xpY3kYASABKAsyHS5hdXRoLnYxLlN1YmFjY291bnRQb2xpY3lWaWV3IjQKHURlbGV0ZVN1YmFjY291bnRQb2xpY3lSZXF1ZXN0EhMKCXBvbGljeV9pZBgBIAEoBkIAIiAKHkRlbGV0ZVN1YmFjY291bnRQb2xpY3lSZXNwb25zZSJIChpTZXRTdWJhY2NvdW50UG9saWN5UmVxdWVzdBIXCg1zdWJhY2NvdW50X2lkGAEgASgGQgASEQoJcG9saWN5X2lkGAIgASgGIh0KG1NldFN1YmFjY291bnRQb2xpY3lSZXNwb25zZSL/AwoNQXBpUG9saWN5VmlldxIKCgJpZBgBIAEoBhIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEi0KDHNwb3RfbWFya2V0cxgEIAMoCzIXLmF1dGgudjEuU3BvdE1hcmtldFJ1bGUSKAoHYWN0aW9ucxgGIAMoDjIVLmF1dGgudjEuUG9saWN5QWN0aW9uQgASNwoRc3BvdF9tYXJrZXRfc2NvcGUYByABKA4yGi5hdXRoLnYxLk1hcmtldFNjb3BlLlZhbHVlQgASEwoLaXNfdGVtcGxhdGUYEyABKAgSGgoSc291cmNlX3RlbXBsYXRlX2lkGBQgASgGEi4KCmNyZWF0ZWRfYXQYFSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhAKCHJldmlzaW9uGBcgASgESgQIBRAGSgQICBAJSgQIDRAOSgQIERASSgQIEhATUgxwZXJwX21hcmtldHNSEXBlcnBfbWFya2V0X3Njb3BlUiFkYWlseV9pbnRlcm5hbF90cmFuc2Zlcl9vdXRfbGltaXRSFGRhaWx5X3dpdGhkcmF3X2xpbWl0UhJtYXhfb3JkZXJfbm90aW9uYWwiOgoWTGlzdEFwaVBvbGljaWVzUmVxdWVzdBIVCgZrZXlfaWQYASABKAlCAEgAiAEBQgkKB19rZXlfaWQiQwoXTGlzdEFwaVBvbGljaWVzUmVzcG9uc2USKAoIcG9saWNpZXMYASADKAsyFi5hdXRoLnYxLkFwaVBvbGljeVZpZXciTAoTR2V0QXBpUG9saWN5UmVxdWVzdBITCglwb2xpY3lfaWQYASABKAZCABIVCgZrZXlfaWQYAiABKAlCAEgAiAEBQgkKB19rZXlfaWQiPgoUR2V0QXBpUG9saWN5UmVzcG9uc2USJgoGcG9saWN5GAEgASgLMhYuYXV0aC52MS5BcGlQb2xpY3lWaWV3Iu8CCg1BcGlQb2xpY3lTcGVjEg4KBG5hbWUYASABKAlCABIVCgtkZXNjcmlwdGlvbhgCIAEoCUIAEjEKDHNwb3RfbWFya2V0cxgDIAMoCzIbLmF1dGgudjEuU3BvdE1hcmtldFNlbGVjdG9yEjcKEXNwb3RfbWFya2V0X3Njb3BlGAUgASgOMhouYXV0aC52MS5NYXJrZXRTY29wZS5WYWx1ZUIAEigKB2FjdGlvbnMYByADKA4yFS5hdXRoLnYxLlBvbGljeUFjdGlvbkIAEhMKC2lzX3RlbXBsYXRlGBMgASgIOgBKBAgEEAVKBAgGEAdKBAgNEA5KBAgREBJKBAgSEBNSDHBlcnBfbWFya2V0c1IRcGVycF9tYXJrZXRfc2NvcGVSIWRhaWx5X2ludGVybmFsX3RyYW5zZmVyX291dF9saW1pdFIUZGFpbHlfd2l0aGRyYXdfbGltaXRSEm1heF9vcmRlcl9ub3Rpb25hbCJeChZDcmVhdGVBcGlQb2xpY3lSZXF1ZXN0EigKBnBvbGljeRgBIAEoCzIWLmF1dGgudjEuQXBpUG9saWN5U3BlY0IAEhoKEGFzc2lnbl90b19rZXlfaWQYAiABKAlCACJBChdDcmVhdGVBcGlQb2xpY3lSZXNwb25zZRImCgZwb2xpY3kYASABKAsyFi5hdXRoLnYxLkFwaVBvbGljeVZpZXcipwEKFlVwZGF0ZUFwaVBvbGljeVJlcXVlc3QSEwoJcG9saWN5X2lkGAEgASgGQgASKAoGcG9saWN5GAIgASgLMhYuYXV0aC52MS5BcGlQb2xpY3lTcGVjQgASMQoLdXBkYXRlX21hc2sYAyABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQgASGwoRZXhwZWN0ZWRfcmV2aXNpb24YBCABKARCACJBChdVcGRhdGVBcGlQb2xpY3lSZXNwb25zZRImCgZwb2xpY3kYASABKAsyFi5hdXRoLnYxLkFwaVBvbGljeVZpZXciLQoWRGVsZXRlQXBpUG9saWN5UmVxdWVzdBITCglwb2xpY3lfaWQYASABKAZCACIZChdEZWxldGVBcGlQb2xpY3lSZXNwb25zZSI9ChZTZXRBcGlLZXlQb2xpY3lSZXF1ZXN0EhAKBmtleV9pZBgBIAEoCUIAEhEKCXBvbGljeV9pZBgCIAEoBiIZChdTZXRBcGlLZXlQb2xpY3lSZXNwb25zZSrOAgoMUG9saWN5QWN0aW9uEg8KC1VOU1BFQ0lGSUVEEAASDgoKVFJBREVfU1BPVBABEhUKEUlOVEVSTkFMX1RSQU5TRkVSEAMSFQoRRVhURVJOQUxfV0lUSERSQVcQBBIRCg1SRUFEX0JBTEFOQ0VTEAUSDQoJUkVBRF9TUE9UEAYSGwoXUkVBRF9JTlRFUk5BTF9UUkFOU0ZFUlMQCBIVChFSRUFEX0FERFJFU1NfQk9PSxALEhcKE01BTkFHRV9BRERSRVNTX0JPT0sQDCIECAIQAiIECAcQByIECA0QDSIECAkQCSoKVFJBREVfUEVSUCoJUkVBRF9QRVJQKhpSRUFEX1RSQU5TRkVSX0RFU1RJTkFUSU9OUyoaTUFOQUdFX1RSQU5TRkVSX1dISVRFTElTVFMqGVJFQURfRVhURVJOQUxfV0lUSERSQVdBTFMykgkKDVBvbGljeVNlcnZpY2USawoWTGlzdFN1YmFjY291bnRQb2xpY2llcxImLmF1dGgudjEuTGlzdFN1YmFjY291bnRQb2xpY2llc1JlcXVlc3QaJy5hdXRoLnYxLkxpc3RTdWJhY2NvdW50UG9saWNpZXNSZXNwb25zZSIAEmIKE0dldFN1YmFjY291bnRQb2xpY3kSIy5hdXRoLnYxLkdldFN1YmFjY291bnRQb2xpY3lSZXF1ZXN0GiQuYXV0aC52MS5HZXRTdWJhY2NvdW50UG9saWN5UmVzcG9uc2UiABJrChZDcmVhdGVTdWJhY2NvdW50UG9saWN5EiYuYXV0aC52MS5DcmVhdGVTdWJhY2NvdW50UG9saWN5UmVxdWVzdBonLmF1dGgudjEuQ3JlYXRlU3ViYWNjb3VudFBvbGljeVJlc3BvbnNlIgASawoWVXBkYXRlU3ViYWNjb3VudFBvbGljeRImLmF1dGgudjEuVXBkYXRlU3ViYWNjb3VudFBvbGljeVJlcXVlc3QaJy5hdXRoLnYxLlVwZGF0ZVN1YmFjY291bnRQb2xpY3lSZXNwb25zZSIAEmsKFkRlbGV0ZVN1YmFjY291bnRQb2xpY3kSJi5hdXRoLnYxLkRlbGV0ZVN1YmFjY291bnRQb2xpY3lSZXF1ZXN0GicuYXV0aC52MS5EZWxldGVTdWJhY2NvdW50UG9saWN5UmVzcG9uc2UiABJiChNTZXRTdWJhY2NvdW50UG9saWN5EiMuYXV0aC52MS5TZXRTdWJhY2NvdW50UG9saWN5UmVxdWVzdBokLmF1dGgudjEuU2V0U3ViYWNjb3VudFBvbGljeVJlc3BvbnNlIgASVgoPTGlzdEFwaVBvbGljaWVzEh8uYXV0aC52MS5MaXN0QXBpUG9saWNpZXNSZXF1ZXN0GiAuYXV0aC52MS5MaXN0QXBpUG9saWNpZXNSZXNwb25zZSIAEk0KDEdldEFwaVBvbGljeRIcLmF1dGgudjEuR2V0QXBpUG9saWN5UmVxdWVzdBodLmF1dGgudjEuR2V0QXBpUG9saWN5UmVzcG9uc2UiABJWCg9DcmVhdGVBcGlQb2xpY3kSHy5hdXRoLnYxLkNyZWF0ZUFwaVBvbGljeVJlcXVlc3QaIC5hdXRoLnYxLkNyZWF0ZUFwaVBvbGljeVJlc3BvbnNlIgASVgoPVXBkYXRlQXBpUG9saWN5Eh8uYXV0aC52MS5VcGRhdGVBcGlQb2xpY3lSZXF1ZXN0GiAuYXV0aC52MS5VcGRhdGVBcGlQb2xpY3lSZXNwb25zZSIAElYKD0RlbGV0ZUFwaVBvbGljeRIfLmF1dGgudjEuRGVsZXRlQXBpUG9saWN5UmVxdWVzdBogLmF1dGgudjEuRGVsZXRlQXBpUG9saWN5UmVzcG9uc2UiABJWCg9TZXRBcGlLZXlQb2xpY3kSHy5hdXRoLnYxLlNldEFwaUtleVBvbGljeVJlcXVlc3QaIC5hdXRoLnYxLlNldEFwaUtleVBvbGljeVJlc3BvbnNlIgBCPFo6Z2l0aHViLmNvbS9GYWJyaWMtTGFicy9wb2x5ZXN0ZXItc2RrLWdvL2dlbi9hdXRoL3YxO2F1dGh2MWIGcHJvdG8z\", [file_google_protobuf_field_mask, file_google_protobuf_timestamp, file_polyester_api_options]);\n\n/**\n * MarketScope describes how a policy applies to spot markets.\n *\n * @generated from message auth.v1.MarketScope\n */\nexport type MarketScope = Message<\"auth.v1.MarketScope\"> & {\n};\n\n/**\n * Describes the message auth.v1.MarketScope.\n * Use `create(MarketScopeSchema)` to create a new message.\n */\nexport const MarketScopeSchema: GenMessage<MarketScope> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 0);\n\n/**\n * Value is the market-level scope:\n * - ALL: no market-level restriction; new listings are automatically allowed.\n * - ALLOWLIST: only the listed markets are allowed.\n *\n * @generated from enum auth.v1.MarketScope.Value\n */\nexport enum MarketScope_Value {\n /**\n * No scope selected. Create and update requests treat this as ALL.\n *\n * @generated from enum value: UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * Allow all current and future markets for this policy.\n *\n * @generated from enum value: ALL = 1;\n */\n ALL = 1,\n\n /**\n * Allow only the markets listed on this policy.\n *\n * @generated from enum value: ALLOWLIST = 2;\n */\n ALLOWLIST = 2,\n}\n\n/**\n * Describes the enum auth.v1.MarketScope.Value.\n */\nexport const MarketScope_ValueSchema: GenEnum<MarketScope_Value> = /*@__PURE__*/\n enumDesc(file_auth_v1_policies, 0, 0);\n\n/**\n * SpotMarketSelector identifies an allowed spot market in policy mutations.\n *\n * @generated from message auth.v1.SpotMarketSelector\n */\nexport type SpotMarketSelector = Message<\"auth.v1.SpotMarketSelector\"> & {\n /**\n * Stable numeric pair ID from GetSpotConfig.\n *\n * @generated from field: uint32 symbol_id = 1;\n */\n symbolId: number;\n};\n\n/**\n * Describes the message auth.v1.SpotMarketSelector.\n * Use `create(SpotMarketSelectorSchema)` to create a new message.\n */\nexport const SpotMarketSelectorSchema: GenMessage<SpotMarketSelector> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 1);\n\n/**\n * SpotMarketRule describes an allowed spot market in policy views.\n *\n * @generated from message auth.v1.SpotMarketRule\n */\nexport type SpotMarketRule = Message<\"auth.v1.SpotMarketRule\"> & {\n /**\n * Stable numeric pair ID.\n *\n * @generated from field: uint32 symbol_id = 1;\n */\n symbolId: number;\n};\n\n/**\n * Describes the message auth.v1.SpotMarketRule.\n * Use `create(SpotMarketRuleSchema)` to create a new message.\n */\nexport const SpotMarketRuleSchema: GenMessage<SpotMarketRule> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 2);\n\n/**\n * SubaccountPolicyView is the public view of a sub-account policy.\n *\n * @generated from message auth.v1.SubaccountPolicyView\n */\nexport type SubaccountPolicyView = Message<\"auth.v1.SubaccountPolicyView\"> & {\n /**\n * Policy identifier (opaque ID).\n *\n * @generated from field: fixed64 id = 1;\n */\n id: bigint;\n\n /**\n * Human-readable policy name.\n *\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * Optional policy description for dashboards and audits.\n *\n * @generated from field: string description = 3;\n */\n description: string;\n\n /**\n * Allowed spot markets for this sub-account.\n *\n * @generated from field: repeated auth.v1.SpotMarketRule spot_markets = 4;\n */\n spotMarkets: SpotMarketRule[];\n\n /**\n * Market-level scope for spot markets. When ALL, spot_markets is returned\n * for display only and is not enforced.\n *\n * @generated from field: auth.v1.MarketScope.Value spot_market_scope = 6;\n */\n spotMarketScope: MarketScope_Value;\n\n /**\n * Effective high-level actions enabled for the sub-account. Mandatory\n * read-only actions are always included.\n *\n * @generated from field: repeated auth.v1.PolicyAction actions = 8;\n */\n actions: PolicyAction[];\n\n /**\n * True if this policy is a reusable template; false if it is a\n * per-sub-account instance.\n *\n * @generated from field: bool is_template = 10;\n */\n isTemplate: boolean;\n\n /**\n * Optional source template this policy was copied from (opaque ID). This is\n * audit metadata only and does not imply live linkage.\n *\n * @generated from field: fixed64 source_template_id = 11;\n */\n sourceTemplateId: bigint;\n\n /**\n * Maximum notional size allowed for any single order on this sub-account,\n * expressed in canonical quote microunits (one unit is 0.000001 USDT).\n * A value of 0 means \"no explicit cap\".\n *\n * @generated from field: uint64 max_order_notional = 13;\n */\n maxOrderNotional: bigint;\n\n /**\n * Maximum number of resting orders allowed on this sub-account at any time.\n * A value of 0 means \"no explicit cap\".\n *\n * @generated from field: uint32 max_open_orders = 14;\n */\n maxOpenOrders: number;\n\n /**\n * When true, new orders and exposure-increasing order or trigger changes are\n * rejected regardless of other settings. Existing orders and triggers may\n * still be canceled or paused.\n *\n * @generated from field: bool trading_halted = 23;\n */\n tradingHalted: boolean;\n\n /**\n * When true, this policy is write-protected and requires an elevated approval\n * flow to modify it.\n *\n * @generated from field: bool locked = 27;\n */\n locked: boolean;\n\n /**\n * Optional review time in UTC. This is governance metadata and does not\n * automatically disable the policy.\n *\n * @generated from field: google.protobuf.Timestamp review_at = 28;\n */\n reviewAt?: Timestamp | undefined;\n\n /**\n * Optional expiry time in UTC. This is governance metadata and does not\n * automatically disable the policy.\n *\n * @generated from field: google.protobuf.Timestamp expires_at = 29;\n */\n expiresAt?: Timestamp | undefined;\n\n /**\n * Creation time in UTC.\n *\n * @generated from field: google.protobuf.Timestamp created_at = 20;\n */\n createdAt?: Timestamp | undefined;\n\n /**\n * Last update time in UTC.\n *\n * @generated from field: google.protobuf.Timestamp updated_at = 21;\n */\n updatedAt?: Timestamp | undefined;\n\n /**\n * Monotonic resource revision used for conditional updates.\n *\n * @generated from field: uint64 revision = 30;\n */\n revision: bigint;\n};\n\n/**\n * Describes the message auth.v1.SubaccountPolicyView.\n * Use `create(SubaccountPolicyViewSchema)` to create a new message.\n */\nexport const SubaccountPolicyViewSchema: GenMessage<SubaccountPolicyView> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 3);\n\n/**\n * ListSubaccountPoliciesRequest lists the finite set of sub-account policies\n * visible in the requested account scope. Results are sorted by ascending\n * policy ID and are not paginated.\n *\n * @generated from message auth.v1.ListSubaccountPoliciesRequest\n */\nexport type ListSubaccountPoliciesRequest = Message<\"auth.v1.ListSubaccountPoliciesRequest\"> & {\n /**\n * Optional sub-account context. When provided, a current member may read the\n * policy attached to that sub-account; the owner retains visibility of all\n * policies owned by their root account. When omitted, only policies owned by\n * the caller's root account are returned.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n};\n\n/**\n * Describes the message auth.v1.ListSubaccountPoliciesRequest.\n * Use `create(ListSubaccountPoliciesRequestSchema)` to create a new message.\n */\nexport const ListSubaccountPoliciesRequestSchema: GenMessage<ListSubaccountPoliciesRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 4);\n\n/**\n * ListSubaccountPoliciesResponse contains sub-account policy templates sorted\n * by ascending policy ID.\n *\n * @generated from message auth.v1.ListSubaccountPoliciesResponse\n */\nexport type ListSubaccountPoliciesResponse = Message<\"auth.v1.ListSubaccountPoliciesResponse\"> & {\n /**\n * Sub-account policy templates visible to the caller.\n *\n * @generated from field: repeated auth.v1.SubaccountPolicyView policies = 1;\n */\n policies: SubaccountPolicyView[];\n};\n\n/**\n * Describes the message auth.v1.ListSubaccountPoliciesResponse.\n * Use `create(ListSubaccountPoliciesResponseSchema)` to create a new message.\n */\nexport const ListSubaccountPoliciesResponseSchema: GenMessage<ListSubaccountPoliciesResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 5);\n\n/**\n * GetSubaccountPolicyRequest fetches one sub-account policy template by ID.\n *\n * @generated from message auth.v1.GetSubaccountPolicyRequest\n */\nexport type GetSubaccountPolicyRequest = Message<\"auth.v1.GetSubaccountPolicyRequest\"> & {\n /**\n * Policy identifier (opaque ID).\n *\n * @generated from field: fixed64 policy_id = 1;\n */\n policyId: bigint;\n\n /**\n * Optional sub-account context. When provided, a current member may read the\n * policy attached to that sub-account; the owner may also read another policy\n * owned by their root account. When omitted, the policy must be owned by the\n * caller's root account.\n *\n * @generated from field: optional fixed64 subaccount_id = 2;\n */\n subaccountId?: bigint | undefined;\n};\n\n/**\n * Describes the message auth.v1.GetSubaccountPolicyRequest.\n * Use `create(GetSubaccountPolicyRequestSchema)` to create a new message.\n */\nexport const GetSubaccountPolicyRequestSchema: GenMessage<GetSubaccountPolicyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 6);\n\n/**\n * GetSubaccountPolicyResponse returns the requested sub-account policy.\n *\n * @generated from message auth.v1.GetSubaccountPolicyResponse\n */\nexport type GetSubaccountPolicyResponse = Message<\"auth.v1.GetSubaccountPolicyResponse\"> & {\n /**\n * Matching sub-account policy.\n *\n * @generated from field: auth.v1.SubaccountPolicyView policy = 1;\n */\n policy?: SubaccountPolicyView | undefined;\n};\n\n/**\n * Describes the message auth.v1.GetSubaccountPolicyResponse.\n * Use `create(GetSubaccountPolicyResponseSchema)` to create a new message.\n */\nexport const GetSubaccountPolicyResponseSchema: GenMessage<GetSubaccountPolicyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 7);\n\n/**\n * SubaccountPolicySpec contains the mutable configuration of a sub-account policy.\n *\n * @generated from message auth.v1.SubaccountPolicySpec\n */\nexport type SubaccountPolicySpec = Message<\"auth.v1.SubaccountPolicySpec\"> & {\n /**\n * Human-readable policy name. Create requires a non-empty value; update\n * validates it after merging fields selected by update_mask.\n *\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * Optional policy description for dashboards and audits. Maximum 256 characters.\n *\n * @generated from field: string description = 2;\n */\n description: string;\n\n /**\n * Allowed spot markets for this policy.\n *\n * @generated from field: repeated auth.v1.SpotMarketSelector spot_markets = 3;\n */\n spotMarkets: SpotMarketSelector[];\n\n /**\n * Market-level scope for spot markets. When unspecified, defaults to ALL.\n *\n * @generated from field: auth.v1.MarketScope.Value spot_market_scope = 5;\n */\n spotMarketScope: MarketScope_Value;\n\n /**\n * High-level actions enabled for the sub-account policy. Mandatory read-only\n * actions are included when omitted. Up to 64 unique explicit actions are\n * allowed.\n *\n * @generated from field: repeated auth.v1.PolicyAction actions = 7;\n */\n actions: PolicyAction[];\n\n /**\n * Maximum notional size for any single order on this sub-account, expressed\n * in canonical quote microunits (one unit is 0.000001 USDT). A value of 0\n * means no explicit cap.\n *\n * @generated from field: uint64 max_order_notional = 13;\n */\n maxOrderNotional: bigint;\n\n /**\n * Maximum number of resting orders allowed on this sub-account at any time.\n * A value of 0 means no explicit cap.\n *\n * @generated from field: uint32 max_open_orders = 14;\n */\n maxOpenOrders: number;\n\n /**\n * When true, new orders and exposure-increasing order or trigger changes are\n * rejected regardless of other settings. Existing orders and triggers may\n * still be canceled or paused.\n *\n * @generated from field: bool trading_halted = 21;\n */\n tradingHalted: boolean;\n\n /**\n * When true, the policy is write-protected and requires an elevated mutation path.\n *\n * @generated from field: bool locked = 25;\n */\n locked: boolean;\n\n /**\n * Optional review time in UTC. This does not automatically disable the policy.\n *\n * @generated from field: google.protobuf.Timestamp review_at = 26;\n */\n reviewAt?: Timestamp | undefined;\n\n /**\n * Optional expiry time in UTC. This does not automatically disable the policy.\n *\n * @generated from field: google.protobuf.Timestamp expires_at = 27;\n */\n expiresAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message auth.v1.SubaccountPolicySpec.\n * Use `create(SubaccountPolicySpecSchema)` to create a new message.\n */\nexport const SubaccountPolicySpecSchema: GenMessage<SubaccountPolicySpec> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 8);\n\n/**\n * CreateSubaccountPolicyRequest defines a new sub-account policy template, with\n * an optional attach step for one target sub-account.\n *\n * @generated from message auth.v1.CreateSubaccountPolicyRequest\n */\nexport type CreateSubaccountPolicyRequest = Message<\"auth.v1.CreateSubaccountPolicyRequest\"> & {\n /**\n * Complete mutable policy configuration.\n *\n * @generated from field: auth.v1.SubaccountPolicySpec policy = 1;\n */\n policy?: SubaccountPolicySpec | undefined;\n\n /**\n * Optional target sub-account to attach atomically after creation.\n *\n * @generated from field: optional fixed64 subaccount_id = 2;\n */\n subaccountId?: bigint | undefined;\n};\n\n/**\n * Describes the message auth.v1.CreateSubaccountPolicyRequest.\n * Use `create(CreateSubaccountPolicyRequestSchema)` to create a new message.\n */\nexport const CreateSubaccountPolicyRequestSchema: GenMessage<CreateSubaccountPolicyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 9);\n\n/**\n * CreateSubaccountPolicyResponse returns the created sub-account policy.\n *\n * @generated from message auth.v1.CreateSubaccountPolicyResponse\n */\nexport type CreateSubaccountPolicyResponse = Message<\"auth.v1.CreateSubaccountPolicyResponse\"> & {\n /**\n * Created sub-account policy.\n *\n * @generated from field: auth.v1.SubaccountPolicyView policy = 1;\n */\n policy?: SubaccountPolicyView | undefined;\n};\n\n/**\n * Describes the message auth.v1.CreateSubaccountPolicyResponse.\n * Use `create(CreateSubaccountPolicyResponseSchema)` to create a new message.\n */\nexport const CreateSubaccountPolicyResponseSchema: GenMessage<CreateSubaccountPolicyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 10);\n\n/**\n * UpdateSubaccountPolicyRequest changes selected mutable fields on an existing\n * sub-account policy.\n *\n * @generated from message auth.v1.UpdateSubaccountPolicyRequest\n */\nexport type UpdateSubaccountPolicyRequest = Message<\"auth.v1.UpdateSubaccountPolicyRequest\"> & {\n /**\n * Policy identifier (opaque ID).\n *\n * @generated from field: fixed64 policy_id = 1;\n */\n policyId: bigint;\n\n /**\n * Candidate values for fields selected by update_mask.\n *\n * @generated from field: auth.v1.SubaccountPolicySpec policy = 2;\n */\n policy?: SubaccountPolicySpec | undefined;\n\n /**\n * Mutable fields to apply. Paths are relative to policy. The mask is required,\n * must be non-empty, and cannot contain \"*\".\n *\n * @generated from field: google.protobuf.FieldMask update_mask = 3;\n */\n updateMask?: FieldMask | undefined;\n\n /**\n * Revision returned by the latest successful read. Stale revisions fail with\n * a conflict before no-op detection.\n *\n * @generated from field: uint64 expected_revision = 4;\n */\n expectedRevision: bigint;\n};\n\n/**\n * Describes the message auth.v1.UpdateSubaccountPolicyRequest.\n * Use `create(UpdateSubaccountPolicyRequestSchema)` to create a new message.\n */\nexport const UpdateSubaccountPolicyRequestSchema: GenMessage<UpdateSubaccountPolicyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 11);\n\n/**\n * UpdateSubaccountPolicyResponse returns the updated sub-account policy.\n *\n * @generated from message auth.v1.UpdateSubaccountPolicyResponse\n */\nexport type UpdateSubaccountPolicyResponse = Message<\"auth.v1.UpdateSubaccountPolicyResponse\"> & {\n /**\n * Updated sub-account policy.\n *\n * @generated from field: auth.v1.SubaccountPolicyView policy = 1;\n */\n policy?: SubaccountPolicyView | undefined;\n};\n\n/**\n * Describes the message auth.v1.UpdateSubaccountPolicyResponse.\n * Use `create(UpdateSubaccountPolicyResponseSchema)` to create a new message.\n */\nexport const UpdateSubaccountPolicyResponseSchema: GenMessage<UpdateSubaccountPolicyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 12);\n\n/**\n * DeleteSubaccountPolicyRequest deletes a sub-account policy template when it\n * is not in use.\n *\n * @generated from message auth.v1.DeleteSubaccountPolicyRequest\n */\nexport type DeleteSubaccountPolicyRequest = Message<\"auth.v1.DeleteSubaccountPolicyRequest\"> & {\n /**\n * Policy identifier (opaque ID).\n *\n * @generated from field: fixed64 policy_id = 1;\n */\n policyId: bigint;\n};\n\n/**\n * Describes the message auth.v1.DeleteSubaccountPolicyRequest.\n * Use `create(DeleteSubaccountPolicyRequestSchema)` to create a new message.\n */\nexport const DeleteSubaccountPolicyRequestSchema: GenMessage<DeleteSubaccountPolicyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 13);\n\n/**\n * DeleteSubaccountPolicyResponse is empty when the delete succeeds.\n *\n * @generated from message auth.v1.DeleteSubaccountPolicyResponse\n */\nexport type DeleteSubaccountPolicyResponse = Message<\"auth.v1.DeleteSubaccountPolicyResponse\"> & {\n};\n\n/**\n * Describes the message auth.v1.DeleteSubaccountPolicyResponse.\n * Use `create(DeleteSubaccountPolicyResponseSchema)` to create a new message.\n */\nexport const DeleteSubaccountPolicyResponseSchema: GenMessage<DeleteSubaccountPolicyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 14);\n\n/**\n * SetSubaccountPolicyRequest attaches or clears a policy template on a\n * sub-account.\n *\n * @generated from message auth.v1.SetSubaccountPolicyRequest\n */\nexport type SetSubaccountPolicyRequest = Message<\"auth.v1.SetSubaccountPolicyRequest\"> & {\n /**\n * Sub-account identifier (opaque ID).\n *\n * @generated from field: fixed64 subaccount_id = 1;\n */\n subaccountId: bigint;\n\n /**\n * Policy template to attach (opaque ID). A value of 0 clears the explicit\n * binding and restores the system Read Only policy.\n *\n * @generated from field: fixed64 policy_id = 2;\n */\n policyId: bigint;\n};\n\n/**\n * Describes the message auth.v1.SetSubaccountPolicyRequest.\n * Use `create(SetSubaccountPolicyRequestSchema)` to create a new message.\n */\nexport const SetSubaccountPolicyRequestSchema: GenMessage<SetSubaccountPolicyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 15);\n\n/**\n * SetSubaccountPolicyResponse is empty when the policy binding succeeds.\n *\n * @generated from message auth.v1.SetSubaccountPolicyResponse\n */\nexport type SetSubaccountPolicyResponse = Message<\"auth.v1.SetSubaccountPolicyResponse\"> & {\n};\n\n/**\n * Describes the message auth.v1.SetSubaccountPolicyResponse.\n * Use `create(SetSubaccountPolicyResponseSchema)` to create a new message.\n */\nexport const SetSubaccountPolicyResponseSchema: GenMessage<SetSubaccountPolicyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 16);\n\n/**\n * ApiPolicyView is the public view of an API key policy template. Its action\n * and spot-market floor cannot exceed an attached sub-account policy.\n *\n * @generated from message auth.v1.ApiPolicyView\n */\nexport type ApiPolicyView = Message<\"auth.v1.ApiPolicyView\"> & {\n /**\n * Policy identifier (opaque ID).\n *\n * @generated from field: fixed64 id = 1;\n */\n id: bigint;\n\n /**\n * Human-readable policy name.\n *\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * Optional policy description for dashboards and audits.\n *\n * @generated from field: string description = 3;\n */\n description: string;\n\n /**\n * Allowed spot markets for this API key policy.\n *\n * @generated from field: repeated auth.v1.SpotMarketRule spot_markets = 4;\n */\n spotMarkets: SpotMarketRule[];\n\n /**\n * High-level actions enabled for this API key. Up to 64 unique explicit\n * actions may be returned.\n *\n * @generated from field: repeated auth.v1.PolicyAction actions = 6;\n */\n actions: PolicyAction[];\n\n /**\n * Market-level scope for spot markets. When ALL, spot_markets is returned\n * for display only and is not enforced.\n *\n * --- Template / lifecycle metadata ---\n *\n * @generated from field: auth.v1.MarketScope.Value spot_market_scope = 7;\n */\n spotMarketScope: MarketScope_Value;\n\n /**\n * When true, this policy is intended to be reused as a template across\n * multiple API keys. When false, it represents a single-key instance.\n *\n * @generated from field: bool is_template = 19;\n */\n isTemplate: boolean;\n\n /**\n * Optional source template this policy was copied from (opaque ID). This is\n * audit metadata only and does not imply live linkage.\n *\n * @generated from field: fixed64 source_template_id = 20;\n */\n sourceTemplateId: bigint;\n\n /**\n * Creation time in UTC.\n *\n * @generated from field: google.protobuf.Timestamp created_at = 21;\n */\n createdAt?: Timestamp | undefined;\n\n /**\n * Last update time in UTC.\n *\n * @generated from field: google.protobuf.Timestamp updated_at = 22;\n */\n updatedAt?: Timestamp | undefined;\n\n /**\n * Monotonic resource revision used for conditional updates.\n *\n * @generated from field: uint64 revision = 23;\n */\n revision: bigint;\n};\n\n/**\n * Describes the message auth.v1.ApiPolicyView.\n * Use `create(ApiPolicyViewSchema)` to create a new message.\n */\nexport const ApiPolicyViewSchema: GenMessage<ApiPolicyView> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 17);\n\n/**\n * ListApiPoliciesRequest lists the finite set of API key policies visible in\n * the requested account scope. Results are sorted by ascending policy ID and\n * are not paginated.\n *\n * @generated from message auth.v1.ListApiPoliciesRequest\n */\nexport type ListApiPoliciesRequest = Message<\"auth.v1.ListApiPoliciesRequest\"> & {\n /**\n * Optional API key context for delegated administration. When omitted, only\n * policies owned by the caller's root account are returned.\n *\n * @generated from field: optional string key_id = 1;\n */\n keyId?: string | undefined;\n};\n\n/**\n * Describes the message auth.v1.ListApiPoliciesRequest.\n * Use `create(ListApiPoliciesRequestSchema)` to create a new message.\n */\nexport const ListApiPoliciesRequestSchema: GenMessage<ListApiPoliciesRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 18);\n\n/**\n * ListApiPoliciesResponse contains API key policy templates sorted by ascending\n * policy ID.\n *\n * @generated from message auth.v1.ListApiPoliciesResponse\n */\nexport type ListApiPoliciesResponse = Message<\"auth.v1.ListApiPoliciesResponse\"> & {\n /**\n * API key policy templates visible to the caller.\n *\n * @generated from field: repeated auth.v1.ApiPolicyView policies = 1;\n */\n policies: ApiPolicyView[];\n};\n\n/**\n * Describes the message auth.v1.ListApiPoliciesResponse.\n * Use `create(ListApiPoliciesResponseSchema)` to create a new message.\n */\nexport const ListApiPoliciesResponseSchema: GenMessage<ListApiPoliciesResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 19);\n\n/**\n * GetApiPolicyRequest fetches one API key policy template by ID.\n *\n * @generated from message auth.v1.GetApiPolicyRequest\n */\nexport type GetApiPolicyRequest = Message<\"auth.v1.GetApiPolicyRequest\"> & {\n /**\n * Policy identifier (opaque ID).\n *\n * @generated from field: fixed64 policy_id = 1;\n */\n policyId: bigint;\n\n /**\n * Optional API key context for delegated administration. When omitted, the\n * policy must be owned by the caller's root account.\n *\n * @generated from field: optional string key_id = 2;\n */\n keyId?: string | undefined;\n};\n\n/**\n * Describes the message auth.v1.GetApiPolicyRequest.\n * Use `create(GetApiPolicyRequestSchema)` to create a new message.\n */\nexport const GetApiPolicyRequestSchema: GenMessage<GetApiPolicyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 20);\n\n/**\n * GetApiPolicyResponse returns the requested API key policy.\n *\n * @generated from message auth.v1.GetApiPolicyResponse\n */\nexport type GetApiPolicyResponse = Message<\"auth.v1.GetApiPolicyResponse\"> & {\n /**\n * Matching API key policy.\n *\n * @generated from field: auth.v1.ApiPolicyView policy = 1;\n */\n policy?: ApiPolicyView | undefined;\n};\n\n/**\n * Describes the message auth.v1.GetApiPolicyResponse.\n * Use `create(GetApiPolicyResponseSchema)` to create a new message.\n */\nexport const GetApiPolicyResponseSchema: GenMessage<GetApiPolicyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 21);\n\n/**\n * ApiPolicySpec contains the mutable configuration of an API key policy.\n *\n * @generated from message auth.v1.ApiPolicySpec\n */\nexport type ApiPolicySpec = Message<\"auth.v1.ApiPolicySpec\"> & {\n /**\n * Human-readable policy name. Create requires a non-empty value; update\n * validates it after merging fields selected by update_mask.\n *\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * Optional policy description for dashboards and audits. Maximum 256 characters.\n *\n * @generated from field: string description = 2;\n */\n description: string;\n\n /**\n * Allowed spot markets for this API key policy.\n *\n * @generated from field: repeated auth.v1.SpotMarketSelector spot_markets = 3;\n */\n spotMarkets: SpotMarketSelector[];\n\n /**\n * Market-level scope for spot markets. When unspecified, defaults to ALL.\n *\n * @generated from field: auth.v1.MarketScope.Value spot_market_scope = 5;\n */\n spotMarketScope: MarketScope_Value;\n\n /**\n * High-level actions enabled for the API key policy. An empty list grants no\n * access. Up to 64 unique explicit actions are allowed.\n *\n * @generated from field: repeated auth.v1.PolicyAction actions = 7;\n */\n actions: PolicyAction[];\n\n /**\n * Whether this policy should be treated as a reusable template.\n *\n * @generated from field: bool is_template = 19;\n */\n isTemplate: boolean;\n};\n\n/**\n * Describes the message auth.v1.ApiPolicySpec.\n * Use `create(ApiPolicySpecSchema)` to create a new message.\n */\nexport const ApiPolicySpecSchema: GenMessage<ApiPolicySpec> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 22);\n\n/**\n * CreateApiPolicyRequest defines a new API key policy template.\n *\n * @generated from message auth.v1.CreateApiPolicyRequest\n */\nexport type CreateApiPolicyRequest = Message<\"auth.v1.CreateApiPolicyRequest\"> & {\n /**\n * Complete mutable policy configuration.\n *\n * @generated from field: auth.v1.ApiPolicySpec policy = 1;\n */\n policy?: ApiPolicySpec | undefined;\n\n /**\n * Optional API key identifier to bind this newly-created policy to\n * atomically. When set, the caller must be allowed to manage the key and the\n * create+assign operation consumes a single fresh step-up proof.\n *\n * @generated from field: string assign_to_key_id = 2;\n */\n assignToKeyId: string;\n};\n\n/**\n * Describes the message auth.v1.CreateApiPolicyRequest.\n * Use `create(CreateApiPolicyRequestSchema)` to create a new message.\n */\nexport const CreateApiPolicyRequestSchema: GenMessage<CreateApiPolicyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 23);\n\n/**\n * CreateApiPolicyResponse returns the created API key policy.\n *\n * @generated from message auth.v1.CreateApiPolicyResponse\n */\nexport type CreateApiPolicyResponse = Message<\"auth.v1.CreateApiPolicyResponse\"> & {\n /**\n * Created API key policy.\n *\n * @generated from field: auth.v1.ApiPolicyView policy = 1;\n */\n policy?: ApiPolicyView | undefined;\n};\n\n/**\n * Describes the message auth.v1.CreateApiPolicyResponse.\n * Use `create(CreateApiPolicyResponseSchema)` to create a new message.\n */\nexport const CreateApiPolicyResponseSchema: GenMessage<CreateApiPolicyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 24);\n\n/**\n * UpdateApiPolicyRequest changes selected mutable fields on an existing API\n * key policy.\n *\n * @generated from message auth.v1.UpdateApiPolicyRequest\n */\nexport type UpdateApiPolicyRequest = Message<\"auth.v1.UpdateApiPolicyRequest\"> & {\n /**\n * Policy identifier (opaque ID).\n *\n * @generated from field: fixed64 policy_id = 1;\n */\n policyId: bigint;\n\n /**\n * Candidate values for fields selected by update_mask.\n *\n * @generated from field: auth.v1.ApiPolicySpec policy = 2;\n */\n policy?: ApiPolicySpec | undefined;\n\n /**\n * Mutable fields to apply. Paths are relative to policy. The mask is required,\n * must be non-empty, and cannot contain \"*\".\n *\n * @generated from field: google.protobuf.FieldMask update_mask = 3;\n */\n updateMask?: FieldMask | undefined;\n\n /**\n * Revision returned by the latest successful read. Stale revisions fail with\n * a conflict before no-op detection.\n *\n * @generated from field: uint64 expected_revision = 4;\n */\n expectedRevision: bigint;\n};\n\n/**\n * Describes the message auth.v1.UpdateApiPolicyRequest.\n * Use `create(UpdateApiPolicyRequestSchema)` to create a new message.\n */\nexport const UpdateApiPolicyRequestSchema: GenMessage<UpdateApiPolicyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 25);\n\n/**\n * UpdateApiPolicyResponse returns the updated API key policy.\n *\n * @generated from message auth.v1.UpdateApiPolicyResponse\n */\nexport type UpdateApiPolicyResponse = Message<\"auth.v1.UpdateApiPolicyResponse\"> & {\n /**\n * Updated API key policy.\n *\n * @generated from field: auth.v1.ApiPolicyView policy = 1;\n */\n policy?: ApiPolicyView | undefined;\n};\n\n/**\n * Describes the message auth.v1.UpdateApiPolicyResponse.\n * Use `create(UpdateApiPolicyResponseSchema)` to create a new message.\n */\nexport const UpdateApiPolicyResponseSchema: GenMessage<UpdateApiPolicyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 26);\n\n/**\n * DeleteApiPolicyRequest deletes an API key policy template when it is not in use.\n *\n * @generated from message auth.v1.DeleteApiPolicyRequest\n */\nexport type DeleteApiPolicyRequest = Message<\"auth.v1.DeleteApiPolicyRequest\"> & {\n /**\n * Policy identifier (opaque ID).\n *\n * @generated from field: fixed64 policy_id = 1;\n */\n policyId: bigint;\n};\n\n/**\n * Describes the message auth.v1.DeleteApiPolicyRequest.\n * Use `create(DeleteApiPolicyRequestSchema)` to create a new message.\n */\nexport const DeleteApiPolicyRequestSchema: GenMessage<DeleteApiPolicyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 27);\n\n/**\n * DeleteApiPolicyResponse is empty when the delete succeeds.\n *\n * @generated from message auth.v1.DeleteApiPolicyResponse\n */\nexport type DeleteApiPolicyResponse = Message<\"auth.v1.DeleteApiPolicyResponse\"> & {\n};\n\n/**\n * Describes the message auth.v1.DeleteApiPolicyResponse.\n * Use `create(DeleteApiPolicyResponseSchema)` to create a new message.\n */\nexport const DeleteApiPolicyResponseSchema: GenMessage<DeleteApiPolicyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 28);\n\n/**\n * SetApiKeyPolicyRequest attaches or clears a policy template on an API key.\n *\n * @generated from message auth.v1.SetApiKeyPolicyRequest\n */\nexport type SetApiKeyPolicyRequest = Message<\"auth.v1.SetApiKeyPolicyRequest\"> & {\n /**\n * Opaque API key identifier, formatted as \"ak_\" followed by 32 lowercase hex\n * characters.\n *\n * @generated from field: string key_id = 1;\n */\n keyId: string;\n\n /**\n * Policy template to attach (opaque ID). A value of 0 clears the binding.\n * An API key without an attached policy has no permissions.\n *\n * @generated from field: fixed64 policy_id = 2;\n */\n policyId: bigint;\n};\n\n/**\n * Describes the message auth.v1.SetApiKeyPolicyRequest.\n * Use `create(SetApiKeyPolicyRequestSchema)` to create a new message.\n */\nexport const SetApiKeyPolicyRequestSchema: GenMessage<SetApiKeyPolicyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 29);\n\n/**\n * SetApiKeyPolicyResponse is empty when the policy binding succeeds.\n *\n * @generated from message auth.v1.SetApiKeyPolicyResponse\n */\nexport type SetApiKeyPolicyResponse = Message<\"auth.v1.SetApiKeyPolicyResponse\"> & {\n};\n\n/**\n * Describes the message auth.v1.SetApiKeyPolicyResponse.\n * Use `create(SetApiKeyPolicyResponseSchema)` to create a new message.\n */\nexport const SetApiKeyPolicyResponseSchema: GenMessage<SetApiKeyPolicyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_policies, 30);\n\n/**\n * PolicyAction is a high-level permission that can be granted by a policy.\n * Write-style actions also grant the matching read visibility where needed by\n * the product experience.\n *\n * @generated from enum auth.v1.PolicyAction\n */\nexport enum PolicyAction {\n /**\n * No policy action selected. An empty API-key action list grants no access;\n * sub-account policies retain their mandatory read-only actions.\n *\n * @generated from enum value: UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * Allow placing and modifying spot orders and triggers, including reading\n * spot orders and trades. Cancellation and pausing remain available as\n * safety actions.\n *\n * @generated from enum value: TRADE_SPOT = 1;\n */\n TRADE_SPOT = 1,\n\n /**\n * Allow internal transfers between sub-accounts or linked Polyester accounts,\n * including reading internal transfer history.\n *\n * @generated from enum value: INTERNAL_TRANSFER = 3;\n */\n INTERNAL_TRANSFER = 3,\n\n /**\n * Allow value to leave Trading through external withdrawals. Destination\n * authorization is enforced separately from this policy.\n *\n * @generated from enum value: EXTERNAL_WITHDRAW = 4;\n */\n EXTERNAL_WITHDRAW = 4,\n\n /**\n * Allow reading balances and equity for a sub-account or API key.\n *\n * @generated from enum value: READ_BALANCES = 5;\n */\n READ_BALANCES = 5,\n\n /**\n * Allow reading spot orders and trades (no write).\n *\n * @generated from enum value: READ_SPOT = 6;\n */\n READ_SPOT = 6,\n\n /**\n * Allow reading internal transfer history.\n *\n * @generated from enum value: READ_INTERNAL_TRANSFERS = 8;\n */\n READ_INTERNAL_TRANSFERS = 8,\n\n /**\n * Allow reading saved, recent, and whitelisted address-book destinations.\n *\n * @generated from enum value: READ_ADDRESS_BOOK = 11;\n */\n READ_ADDRESS_BOOK = 11,\n\n /**\n * Allow creating, updating, deleting, and copying saved destination entries,\n * including reading the address book.\n *\n * @generated from enum value: MANAGE_ADDRESS_BOOK = 12;\n */\n MANAGE_ADDRESS_BOOK = 12,\n}\n\n/**\n * Describes the enum auth.v1.PolicyAction.\n */\nexport const PolicyActionSchema: GenEnum<PolicyAction> = /*@__PURE__*/\n enumDesc(file_auth_v1_policies, 0);\n\n/**\n * PolicyService manages sub-account and API key policy templates and bindings.\n *\n * @generated from service auth.v1.PolicyService\n */\nexport const PolicyService: GenService<{\n /**\n * List sub-account policy templates available to the caller.\n *\n * @generated from rpc auth.v1.PolicyService.ListSubaccountPolicies\n */\n listSubaccountPolicies: {\n methodKind: \"unary\";\n input: typeof ListSubaccountPoliciesRequestSchema;\n output: typeof ListSubaccountPoliciesResponseSchema;\n },\n /**\n * Get a sub-account policy template by id.\n *\n * @generated from rpc auth.v1.PolicyService.GetSubaccountPolicy\n */\n getSubaccountPolicy: {\n methodKind: \"unary\";\n input: typeof GetSubaccountPolicyRequestSchema;\n output: typeof GetSubaccountPolicyResponseSchema;\n },\n /**\n * Create a new sub-account policy template (optionally attach to a sub-account).\n *\n * @generated from rpc auth.v1.PolicyService.CreateSubaccountPolicy\n */\n createSubaccountPolicy: {\n methodKind: \"unary\";\n input: typeof CreateSubaccountPolicyRequestSchema;\n output: typeof CreateSubaccountPolicyResponseSchema;\n },\n /**\n * Change selected fields on an existing sub-account policy template.\n *\n * @generated from rpc auth.v1.PolicyService.UpdateSubaccountPolicy\n */\n updateSubaccountPolicy: {\n methodKind: \"unary\";\n input: typeof UpdateSubaccountPolicyRequestSchema;\n output: typeof UpdateSubaccountPolicyResponseSchema;\n },\n /**\n * Delete a sub-account policy template.\n *\n * @generated from rpc auth.v1.PolicyService.DeleteSubaccountPolicy\n */\n deleteSubaccountPolicy: {\n methodKind: \"unary\";\n input: typeof DeleteSubaccountPolicyRequestSchema;\n output: typeof DeleteSubaccountPolicyResponseSchema;\n },\n /**\n * Attach or clear a sub-account policy for a sub-account.\n *\n * @generated from rpc auth.v1.PolicyService.SetSubaccountPolicy\n */\n setSubaccountPolicy: {\n methodKind: \"unary\";\n input: typeof SetSubaccountPolicyRequestSchema;\n output: typeof SetSubaccountPolicyResponseSchema;\n },\n /**\n * List API key policy templates available to the caller.\n *\n * @generated from rpc auth.v1.PolicyService.ListApiPolicies\n */\n listApiPolicies: {\n methodKind: \"unary\";\n input: typeof ListApiPoliciesRequestSchema;\n output: typeof ListApiPoliciesResponseSchema;\n },\n /**\n * Get an API key policy template by id.\n *\n * @generated from rpc auth.v1.PolicyService.GetApiPolicy\n */\n getApiPolicy: {\n methodKind: \"unary\";\n input: typeof GetApiPolicyRequestSchema;\n output: typeof GetApiPolicyResponseSchema;\n },\n /**\n * Create a new API key policy template.\n *\n * @generated from rpc auth.v1.PolicyService.CreateApiPolicy\n */\n createApiPolicy: {\n methodKind: \"unary\";\n input: typeof CreateApiPolicyRequestSchema;\n output: typeof CreateApiPolicyResponseSchema;\n },\n /**\n * Change selected fields on an existing API key policy template.\n *\n * @generated from rpc auth.v1.PolicyService.UpdateApiPolicy\n */\n updateApiPolicy: {\n methodKind: \"unary\";\n input: typeof UpdateApiPolicyRequestSchema;\n output: typeof UpdateApiPolicyResponseSchema;\n },\n /**\n * Delete an API key policy template.\n *\n * @generated from rpc auth.v1.PolicyService.DeleteApiPolicy\n */\n deleteApiPolicy: {\n methodKind: \"unary\";\n input: typeof DeleteApiPolicyRequestSchema;\n output: typeof DeleteApiPolicyResponseSchema;\n },\n /**\n * Attach or clear an API key policy for a key.\n *\n * @generated from rpc auth.v1.PolicyService.SetApiKeyPolicy\n */\n setApiKeyPolicy: {\n methodKind: \"unary\";\n input: typeof SetApiKeyPolicyRequestSchema;\n output: typeof SetApiKeyPolicyResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_auth_v1_policies, 0);\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,MAAa,wBACX,uBAAS,g7PAAg7P;CAAC;CAAiC;CAAgC;AAA0B,CAAC;;;;;AAcxhQ,MAAa,oBACX,0BAAY,uBAAuB,CAAC;;;;;;;;AAStC,IAAY,oBAAL,yBAAA,mBAAA;;;;;;CAML,kBAAA,kBAAA,iBAAA,KAAA;;;;;;CAOA,kBAAA,kBAAA,SAAA,KAAA;;;;;;CAOA,kBAAA,kBAAA,eAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,0BACX,uBAAS,uBAAuB,GAAG,CAAC;;;;;AAoBtC,MAAa,2BACX,0BAAY,uBAAuB,CAAC;;;;;AAoBtC,MAAa,uBACX,0BAAY,uBAAuB,CAAC;;;;;AAgJtC,MAAa,6BACX,0BAAY,uBAAuB,CAAC;;;;;AAyBtC,MAAa,sCACX,0BAAY,uBAAuB,CAAC;;;;;AAqBtC,MAAa,uCACX,0BAAY,uBAAuB,CAAC;;;;;AA8BtC,MAAa,mCACX,0BAAY,uBAAuB,CAAC;;;;;AAoBtC,MAAa,oCACX,0BAAY,uBAAuB,CAAC;;;;;AAkGtC,MAAa,6BACX,0BAAY,uBAAuB,CAAC;;;;;AA4BtC,MAAa,sCACX,0BAAY,uBAAuB,CAAC;;;;;AAoBtC,MAAa,uCACX,0BAAY,uBAAuB,EAAE;;;;;AA4CvC,MAAa,sCACX,0BAAY,uBAAuB,EAAE;;;;;AAoBvC,MAAa,uCACX,0BAAY,uBAAuB,EAAE;;;;;AAqBvC,MAAa,sCACX,0BAAY,uBAAuB,EAAE;;;;;AAcvC,MAAa,uCACX,0BAAY,uBAAuB,EAAE;;;;;AA6BvC,MAAa,mCACX,0BAAY,uBAAuB,EAAE;;;;;AAcvC,MAAa,oCACX,0BAAY,uBAAuB,EAAE;;;;;AAiGvC,MAAa,sBACX,0BAAY,uBAAuB,EAAE;;;;;AAuBvC,MAAa,+BACX,0BAAY,uBAAuB,EAAE;;;;;AAqBvC,MAAa,gCACX,0BAAY,uBAAuB,EAAE;;;;;AA4BvC,MAAa,4BACX,0BAAY,uBAAuB,EAAE;;;;;AAoBvC,MAAa,6BACX,0BAAY,uBAAuB,EAAE;;;;;AAyDvC,MAAa,sBACX,0BAAY,uBAAuB,EAAE;;;;;AA6BvC,MAAa,+BACX,0BAAY,uBAAuB,EAAE;;;;;AAoBvC,MAAa,gCACX,0BAAY,uBAAuB,EAAE;;;;;AA4CvC,MAAa,+BACX,0BAAY,uBAAuB,EAAE;;;;;AAoBvC,MAAa,gCACX,0BAAY,uBAAuB,EAAE;;;;;AAoBvC,MAAa,+BACX,0BAAY,uBAAuB,EAAE;;;;;AAcvC,MAAa,gCACX,0BAAY,uBAAuB,EAAE;;;;;AA6BvC,MAAa,+BACX,0BAAY,uBAAuB,EAAE;;;;;AAcvC,MAAa,gCACX,0BAAY,uBAAuB,EAAE;;;;;;;;AASvC,IAAY,eAAL,yBAAA,cAAA;;;;;;;CAOL,aAAA,aAAA,iBAAA,KAAA;;;;;;;;CASA,aAAA,aAAA,gBAAA,KAAA;;;;;;;CAQA,aAAA,aAAA,uBAAA,KAAA;;;;;;;CAQA,aAAA,aAAA,uBAAA,KAAA;;;;;;CAOA,aAAA,aAAA,mBAAA,KAAA;;;;;;CAOA,aAAA,aAAA,eAAA,KAAA;;;;;;CAOA,aAAA,aAAA,6BAAA,KAAA;;;;;;CAOA,aAAA,aAAA,uBAAA,MAAA;;;;;;;CAQA,aAAA,aAAA,yBAAA,MAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,qBACX,uBAAS,uBAAuB,CAAC;;;;;;AAOnC,MAAa,gBA0HX,0BAAY,uBAAuB,CAAC"}