@eva_solutions/auth-sdk 0.0.0-stage → 3.0.0-dev-20261107051125

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 (205) hide show
  1. package/CHANGELOG.md +290 -0
  2. package/LICENSE +21 -0
  3. package/README.md +481 -2
  4. package/dist/admin/index.cjs +4 -0
  5. package/dist/admin/index.d.cts +2 -0
  6. package/dist/admin/index.d.ts +2 -0
  7. package/dist/admin/index.js +1 -0
  8. package/dist/admin-DjvuvuI8.js +408 -0
  9. package/dist/admin-DjvuvuI8.js.map +1 -0
  10. package/dist/admin-Q6lbWqLM.cjs +419 -0
  11. package/dist/admin-Q6lbWqLM.cjs.map +1 -0
  12. package/dist/api-path-2Ulruz7R.cjs +34 -0
  13. package/dist/api-path-2Ulruz7R.cjs.map +1 -0
  14. package/dist/api-path-B-vSkL2H.js +29 -0
  15. package/dist/api-path-B-vSkL2H.js.map +1 -0
  16. package/dist/auth-19r-Q6X2.js +84 -0
  17. package/dist/auth-19r-Q6X2.js.map +1 -0
  18. package/dist/auth-DX1N5JA4.cjs +131 -0
  19. package/dist/auth-DX1N5JA4.cjs.map +1 -0
  20. package/dist/auth-handlers-B3iJaPln.js +343 -0
  21. package/dist/auth-handlers-B3iJaPln.js.map +1 -0
  22. package/dist/auth-handlers-BTbXKJms.d.ts +15 -0
  23. package/dist/auth-handlers-BTbXKJms.d.ts.map +1 -0
  24. package/dist/auth-handlers-CDzGFDTu.cjs +404 -0
  25. package/dist/auth-handlers-CDzGFDTu.cjs.map +1 -0
  26. package/dist/auth-handlers-DRUUTEtW.d.cts +15 -0
  27. package/dist/auth-handlers-DRUUTEtW.d.cts.map +1 -0
  28. package/dist/catalog-CHPqldcj.cjs +172 -0
  29. package/dist/catalog-CHPqldcj.cjs.map +1 -0
  30. package/dist/catalog-CIqpzgsM.d.cts +75 -0
  31. package/dist/catalog-CIqpzgsM.d.cts.map +1 -0
  32. package/dist/catalog-CIqpzgsM.d.ts +75 -0
  33. package/dist/catalog-CIqpzgsM.d.ts.map +1 -0
  34. package/dist/catalog-DqPhtCKZ.js +95 -0
  35. package/dist/catalog-DqPhtCKZ.js.map +1 -0
  36. package/dist/config-D6Tr7ev6.d.cts +95 -0
  37. package/dist/config-D6Tr7ev6.d.cts.map +1 -0
  38. package/dist/config-rl4_-VAq.d.ts +95 -0
  39. package/dist/config-rl4_-VAq.d.ts.map +1 -0
  40. package/dist/constants-BE1_9Tod.cjs +52 -0
  41. package/dist/constants-BE1_9Tod.cjs.map +1 -0
  42. package/dist/constants-BY7QZokc.js +29 -0
  43. package/dist/constants-BY7QZokc.js.map +1 -0
  44. package/dist/constants-CcbhOaAP.cjs +153 -0
  45. package/dist/constants-CcbhOaAP.cjs.map +1 -0
  46. package/dist/constants-rNuD5qJn.js +94 -0
  47. package/dist/constants-rNuD5qJn.js.map +1 -0
  48. package/dist/contracts/index.cjs +1006 -0
  49. package/dist/contracts/index.cjs.map +1 -0
  50. package/dist/contracts/index.d.cts +488 -0
  51. package/dist/contracts/index.d.cts.map +1 -0
  52. package/dist/contracts/index.d.ts +488 -0
  53. package/dist/contracts/index.d.ts.map +1 -0
  54. package/dist/contracts/index.js +817 -0
  55. package/dist/contracts/index.js.map +1 -0
  56. package/dist/cookies-DCIcr7uy.cjs +94 -0
  57. package/dist/cookies-DCIcr7uy.cjs.map +1 -0
  58. package/dist/cookies-DKEC7AWv.js +71 -0
  59. package/dist/cookies-DKEC7AWv.js.map +1 -0
  60. package/dist/delegated-token-CVNbMNfy.js +426 -0
  61. package/dist/delegated-token-CVNbMNfy.js.map +1 -0
  62. package/dist/delegated-token-DHSK4rHI.cjs +461 -0
  63. package/dist/delegated-token-DHSK4rHI.cjs.map +1 -0
  64. package/dist/error-helpers-BenWu-_u.d.ts +105 -0
  65. package/dist/error-helpers-BenWu-_u.d.ts.map +1 -0
  66. package/dist/error-helpers-KBHUbkOM.d.cts +105 -0
  67. package/dist/error-helpers-KBHUbkOM.d.cts.map +1 -0
  68. package/dist/error-helpers-XCh4ZJ-g.cjs +282 -0
  69. package/dist/error-helpers-XCh4ZJ-g.cjs.map +1 -0
  70. package/dist/error-helpers-lnwgNOw9.js +145 -0
  71. package/dist/error-helpers-lnwgNOw9.js.map +1 -0
  72. package/dist/error-messages-CGpW1fsg.d.cts +48 -0
  73. package/dist/error-messages-CGpW1fsg.d.cts.map +1 -0
  74. package/dist/error-messages-CGpW1fsg.d.ts +48 -0
  75. package/dist/error-messages-CGpW1fsg.d.ts.map +1 -0
  76. package/dist/event-codes-BBJHon-I.cjs +48 -0
  77. package/dist/event-codes-BBJHon-I.cjs.map +1 -0
  78. package/dist/event-codes-BgcJWsov.d.cts +42 -0
  79. package/dist/event-codes-BgcJWsov.d.cts.map +1 -0
  80. package/dist/event-codes-BgcJWsov.d.ts +42 -0
  81. package/dist/event-codes-BgcJWsov.d.ts.map +1 -0
  82. package/dist/event-codes-DR5_VlaR.js +43 -0
  83. package/dist/event-codes-DR5_VlaR.js.map +1 -0
  84. package/dist/generic/index.cjs +91 -0
  85. package/dist/generic/index.cjs.map +1 -0
  86. package/dist/generic/index.d.cts +27 -0
  87. package/dist/generic/index.d.cts.map +1 -0
  88. package/dist/generic/index.d.ts +27 -0
  89. package/dist/generic/index.d.ts.map +1 -0
  90. package/dist/generic/index.js +80 -0
  91. package/dist/generic/index.js.map +1 -0
  92. package/dist/hono/index.cjs +309 -0
  93. package/dist/hono/index.cjs.map +1 -0
  94. package/dist/hono/index.d.cts +272 -0
  95. package/dist/hono/index.d.cts.map +1 -0
  96. package/dist/hono/index.d.ts +272 -0
  97. package/dist/hono/index.d.ts.map +1 -0
  98. package/dist/hono/index.js +290 -0
  99. package/dist/hono/index.js.map +1 -0
  100. package/dist/hono-openapi/index.cjs +326 -0
  101. package/dist/hono-openapi/index.cjs.map +1 -0
  102. package/dist/hono-openapi/index.d.cts +14 -0
  103. package/dist/hono-openapi/index.d.cts.map +1 -0
  104. package/dist/hono-openapi/index.d.ts +14 -0
  105. package/dist/hono-openapi/index.d.ts.map +1 -0
  106. package/dist/hono-openapi/index.js +307 -0
  107. package/dist/hono-openapi/index.js.map +1 -0
  108. package/dist/http-client-BVF3iktR.cjs +211 -0
  109. package/dist/http-client-BVF3iktR.cjs.map +1 -0
  110. package/dist/http-client-Da0-OMfc.js +206 -0
  111. package/dist/http-client-Da0-OMfc.js.map +1 -0
  112. package/dist/index-BYzDaMR9.d.ts +312 -0
  113. package/dist/index-BYzDaMR9.d.ts.map +1 -0
  114. package/dist/index-CNNMCrdl.d.ts +66 -0
  115. package/dist/index-CNNMCrdl.d.ts.map +1 -0
  116. package/dist/index-DBZoLU4E.d.ts +240 -0
  117. package/dist/index-DBZoLU4E.d.ts.map +1 -0
  118. package/dist/index-DcvQWByo.d.cts +66 -0
  119. package/dist/index-DcvQWByo.d.cts.map +1 -0
  120. package/dist/index-Dold-Ycb.d.cts +1711 -0
  121. package/dist/index-Dold-Ycb.d.cts.map +1 -0
  122. package/dist/index-Dold-Ycb.d.ts +1711 -0
  123. package/dist/index-Dold-Ycb.d.ts.map +1 -0
  124. package/dist/index-jAO62-OD.d.cts +240 -0
  125. package/dist/index-jAO62-OD.d.cts.map +1 -0
  126. package/dist/index-o7nXcl7z.d.cts +312 -0
  127. package/dist/index-o7nXcl7z.d.cts.map +1 -0
  128. package/dist/index.cjs +89 -0
  129. package/dist/index.cjs.map +1 -0
  130. package/dist/index.d.cts +114 -0
  131. package/dist/index.d.cts.map +1 -0
  132. package/dist/index.d.ts +114 -0
  133. package/dist/index.d.ts.map +1 -0
  134. package/dist/index.js +28 -0
  135. package/dist/index.js.map +1 -0
  136. package/dist/jwt-BBNqk0TV.cjs +155 -0
  137. package/dist/jwt-BBNqk0TV.cjs.map +1 -0
  138. package/dist/jwt-DhqgH94B.js +150 -0
  139. package/dist/jwt-DhqgH94B.js.map +1 -0
  140. package/dist/key-resolver-CESqj4-P.cjs +45 -0
  141. package/dist/key-resolver-CESqj4-P.cjs.map +1 -0
  142. package/dist/key-resolver-D56I2Zpz.js +34 -0
  143. package/dist/key-resolver-D56I2Zpz.js.map +1 -0
  144. package/dist/parse-error-response-6qOQS5y9.cjs +316 -0
  145. package/dist/parse-error-response-6qOQS5y9.cjs.map +1 -0
  146. package/dist/parse-error-response-BM9-kjs0.js +239 -0
  147. package/dist/parse-error-response-BM9-kjs0.js.map +1 -0
  148. package/dist/path-segment-C25i6aaH.cjs +29 -0
  149. package/dist/path-segment-C25i6aaH.cjs.map +1 -0
  150. package/dist/path-segment-CyqnaFrP.js +24 -0
  151. package/dist/path-segment-CyqnaFrP.js.map +1 -0
  152. package/dist/react/index.cjs +336 -0
  153. package/dist/react/index.cjs.map +1 -0
  154. package/dist/react/index.d.cts +151 -0
  155. package/dist/react/index.d.cts.map +1 -0
  156. package/dist/react/index.d.ts +151 -0
  157. package/dist/react/index.d.ts.map +1 -0
  158. package/dist/react/index.js +300 -0
  159. package/dist/react/index.js.map +1 -0
  160. package/dist/refresh-dedup-CKaHHe7m.js +14 -0
  161. package/dist/refresh-dedup-CKaHHe7m.js.map +1 -0
  162. package/dist/refresh-dedup-CLdACQXR.cjs +19 -0
  163. package/dist/refresh-dedup-CLdACQXR.cjs.map +1 -0
  164. package/dist/rolldown-runtime-CmQyd0Gu.cjs +27 -0
  165. package/dist/routes-DpAzgY1V.cjs +424 -0
  166. package/dist/routes-DpAzgY1V.cjs.map +1 -0
  167. package/dist/routes-F1g5aVqP.js +347 -0
  168. package/dist/routes-F1g5aVqP.js.map +1 -0
  169. package/dist/s2s/index.cjs +24 -0
  170. package/dist/s2s/index.d.cts +5 -0
  171. package/dist/s2s/index.d.ts +5 -0
  172. package/dist/s2s/index.js +5 -0
  173. package/dist/s2s-6wbotr78.cjs +926 -0
  174. package/dist/s2s-6wbotr78.cjs.map +1 -0
  175. package/dist/s2s-B_0SIQzn.js +897 -0
  176. package/dist/s2s-B_0SIQzn.js.map +1 -0
  177. package/dist/sign-C7y6xdvT.cjs +324 -0
  178. package/dist/sign-C7y6xdvT.cjs.map +1 -0
  179. package/dist/sign-HFtcYwa-.js +259 -0
  180. package/dist/sign-HFtcYwa-.js.map +1 -0
  181. package/dist/tokens-C1nzkn21.cjs +232 -0
  182. package/dist/tokens-C1nzkn21.cjs.map +1 -0
  183. package/dist/tokens-C3Z40qd7.js +107 -0
  184. package/dist/tokens-C3Z40qd7.js.map +1 -0
  185. package/dist/types-B5sf7kKE.d.cts +52 -0
  186. package/dist/types-B5sf7kKE.d.cts.map +1 -0
  187. package/dist/types-CLOIHzRu.d.ts +96 -0
  188. package/dist/types-CLOIHzRu.d.ts.map +1 -0
  189. package/dist/types-CQTZdZIF.d.ts +52 -0
  190. package/dist/types-CQTZdZIF.d.ts.map +1 -0
  191. package/dist/types-DGeQ8j4k.d.cts +538 -0
  192. package/dist/types-DGeQ8j4k.d.cts.map +1 -0
  193. package/dist/types-DIUWza9-.d.ts +538 -0
  194. package/dist/types-DIUWza9-.d.ts.map +1 -0
  195. package/dist/types-qh6ANBCV.d.cts +96 -0
  196. package/dist/types-qh6ANBCV.d.cts.map +1 -0
  197. package/dist/webhooks/index.cjs +8 -0
  198. package/dist/webhooks/index.d.cts +5 -0
  199. package/dist/webhooks/index.d.ts +5 -0
  200. package/dist/webhooks/index.js +4 -0
  201. package/dist/webhooks-B5sAWC9W.js +74 -0
  202. package/dist/webhooks-B5sAWC9W.js.map +1 -0
  203. package/dist/webhooks-Cx11psg1.cjs +79 -0
  204. package/dist/webhooks-Cx11psg1.cjs.map +1 -0
  205. package/package.json +192 -3
@@ -0,0 +1,240 @@
1
+ import { d as Result } from "./types-CLOIHzRu.js";
2
+ import { Bn as UpdateServiceClientResponse, Ct as UpdateProductoRequest, D as SetProductoPermisosAutorizablesRequest, E as ProductoPermisosAutorizablesResponse, Fn as ServiceClientGrant$1, Ht as ReassignTitularRequest, In as ServiceClientPublic$1, Ln as SetServiceClientGrantRequest, On as CreateServiceClientRequest, Pn as RotateServiceClientSecretResponse, Pt as EmpresaEstadoResponse, St as ProductoResponse, Ut as ReassignTitularResponse, bt as ListProductosResponse, ct as SetContratacionRequest, f as ListServiceClientDelegationsResponse, gi as ACCOUNT_STATES, jn as ListServiceClientGrantsResponse, kn as CreateServiceClientResponse, m as SetServiceClientDelegationRequest, nr as MaintenanceCleanupResponse, ot as ContratacionResponse, p as ServiceClientDelegation$1, ur as RepublishPendingResponse, yt as CreateProductoRequest, zn as UpdateServiceClientRequest } from "./index-Dold-Ycb.js";
3
+ /** Unión de literales de todos los estados de cuenta posibles. */
4
+ type AccountState = (typeof ACCOUNT_STATES)[keyof typeof ACCOUNT_STATES];
5
+ /**
6
+ * Configuración del cliente Admin: las credenciales de un service client con la marca `esAdmin`.
7
+ * Cada request se firma con HMAC S2S; el secret nunca viaja.
8
+ */
9
+ type AdminClientConfig = {
10
+ /** Slug del service client con la marca `esAdmin` (clientId). */
11
+ clientId: string;
12
+ /** Secret del service client admin en hex (64 chars), el que devuelve su creación o rotación. */
13
+ secretHex: string;
14
+ /**
15
+ * URL base del Auth Service API (sin trailing slash).
16
+ * Validada en `createAdminClient`: se requiere https (o http con host loopback para tests).
17
+ */
18
+ baseUrl: string;
19
+ };
20
+ /**
21
+ * Service client público (sin el plaintext del secret).
22
+ * Shape del wire en GET /admin/service-clients/*.
23
+ * Las fechas vienen serializadas como ISO strings en el wire.
24
+ */
25
+ type ServiceClientPublic = ServiceClientPublic$1;
26
+ /**
27
+ * Input para crear un nuevo service client (alias del request del contrato). Nace sin
28
+ * concesiones: se asignan con `setServiceClientGrant`. `auth-service` es un slug reservado.
29
+ */
30
+ type CreateServiceClientInput = CreateServiceClientRequest;
31
+ /** Input para crear un producto (alias del request del contrato). `enabled` por defecto es `true`. */
32
+ type CreateProductoInput = CreateProductoRequest;
33
+ /** Input para actualizar un producto (patch parcial; alias del request del contrato). */
34
+ type UpdateProductoInput = UpdateProductoRequest;
35
+ /** Resultado de `listProductos`: `{ productos }`. */
36
+ type ListProductosResult = ListProductosResponse['data'];
37
+ /** Resultado de crear o actualizar un producto: `{ producto }`. */
38
+ type ProductoResult = ProductoResponse['data'];
39
+ /** Concesión de un service client sobre una audiencia: los permisos que puede pedir en su token. */
40
+ type ServiceClientGrant = ServiceClientGrant$1;
41
+ /**
42
+ * Input de `setServiceClientGrant`: audiencia y permisos del catálogo de `auth-contracts`.
43
+ * Un permiso que no es de esa audiencia (p. ej. `admin` en `auth-api`) no compila y el API lo rechaza.
44
+ */
45
+ type SetServiceClientGrantInput = SetServiceClientGrantRequest;
46
+ /** Resultado de `listServiceClientGrants`. */
47
+ type ListServiceClientGrantsResult = ListServiceClientGrantsResponse['data'];
48
+ /**
49
+ * Resultado de crear un service client.
50
+ * El `secret` solo se devuelve UNA VEZ — guardarlo de inmediato.
51
+ */
52
+ type CreateServiceClientResult = CreateServiceClientResponse['data'];
53
+ /**
54
+ * Input para actualizar un service client (patch parcial; alias del request del contrato).
55
+ * Al menos un campo debe estar presente.
56
+ */
57
+ type UpdateServiceClientInput = UpdateServiceClientRequest;
58
+ /**
59
+ * Resultado de actualizar un service client.
60
+ */
61
+ type UpdateServiceClientResult = UpdateServiceClientResponse['data'];
62
+ /**
63
+ * Resultado de rotar el secret de un service client.
64
+ * El `secret` nuevo solo se devuelve UNA VEZ.
65
+ */
66
+ type RotateSecretResult = RotateServiceClientSecretResponse['data'];
67
+ /**
68
+ * Resultado de restaurar una cuenta de usuario eliminada.
69
+ * REQ-RESTORE-01 LOCKED.
70
+ *
71
+ * Tipo propio del SDK: `stateAccount` es la unión completa `AccountState`, y en el wire es el único
72
+ * literal `no_verificado`.
73
+ */
74
+ type RestoreUserResult = {
75
+ userId: string;
76
+ /** Estado de la cuenta tras la restauración. */
77
+ stateAccount: AccountState;
78
+ previouslyDeletedAt: string | null;
79
+ restoredAt: string;
80
+ };
81
+ /**
82
+ * Query de `republishPendingWebhooks`. Tipo propio del SDK (como `ListWebhookDeliveriesQuery`):
83
+ * el query del contrato coacciona strings y su tipo de entrada es `unknown`. Los rangos los valida
84
+ * el API (400).
85
+ */
86
+ type RepublishPendingWebhooksQuery = {
87
+ /** Antigüedad mínima en minutos de las entregas `pending` a republicar. Default del API: 10. */
88
+ older_than_minutes?: number;
89
+ /** Máximo de entregas por llamada. Default y tope del API: 100. */
90
+ limit?: number;
91
+ };
92
+ /**
93
+ * Resultado de `republishPendingWebhooks`: cuántas entregas se republicaron y si quedan más
94
+ * (`hasMore`: vuelve a llamar). Un 503 `service_unavailable` indica que QStash no aceptó el lote.
95
+ */
96
+ type RepublishPendingWebhooksResult = RepublishPendingResponse['data'];
97
+ /**
98
+ * Query de `maintenanceCleanup`. Tipo propio del SDK (como {@link RepublishPendingWebhooksQuery}):
99
+ * el rango lo valida el API (400).
100
+ */
101
+ type MaintenanceCleanupQuery = {
102
+ /** Máximo por lote en cada una de las dos limpiezas. Default y tope del API: 100. */
103
+ limit?: number;
104
+ };
105
+ /**
106
+ * Resultado de `maintenanceCleanup`: cuentas `eliminado` purgadas (ventana de restauración vencida),
107
+ * `webhook_events` sin entregas vivas borrados (fuera de la retención) y si queda más (`hasMore`:
108
+ * vuelve a llamar).
109
+ */
110
+ type MaintenanceCleanupResult = MaintenanceCleanupResponse['data'];
111
+ /**
112
+ * Arista de delegación de un service client: puede intercambiar tokens hacia `audience` con, como
113
+ * máximo, `scopes`; `requiere_scope_origen` vacío = no admite re-exchange.
114
+ */
115
+ type ServiceClientDelegation = ServiceClientDelegation$1;
116
+ /**
117
+ * Input de `setServiceClientDelegation`: audiencia delegable y permisos delegables del catálogo
118
+ * (`auth-api` y `admin` no compilan y el API los rechaza). `requiere_scope_origen` es opcional.
119
+ */
120
+ type SetServiceClientDelegationInput = SetServiceClientDelegationRequest;
121
+ /** Resultado de `listServiceClientDelegations`. */
122
+ type ListServiceClientDelegationsResult = ListServiceClientDelegationsResponse['data'];
123
+ /** Input de `setProductoPermisosAutorizables`: la lista COMPLETA de permisos entre empresas (vacía = ninguno). */
124
+ type SetProductoPermisosAutorizablesInput = SetProductoPermisosAutorizablesRequest;
125
+ /** Permisos entre empresas que un producto puede conceder: `{ producto, permisos }`. */
126
+ type ProductoPermisosAutorizablesResult = ProductoPermisosAutorizablesResponse['data'];
127
+ /**
128
+ * Input de `reassignEmpresaTitular`: la persona que pasa a titular y qué pasa con el titular
129
+ * anterior (`'miembro'` por defecto, o `'fuera'`).
130
+ */
131
+ type ReassignEmpresaTitularInput = ReassignTitularRequest;
132
+ /** Resultado de la reasignación de titular. */
133
+ type ReassignEmpresaTitularResult = ReassignTitularResponse['data'];
134
+ /** Estado de la empresa tras `bajaEmpresa` / `reactivarEmpresa`. */
135
+ type AdminEmpresaEstadoResult = EmpresaEstadoResponse['data'];
136
+ /** Input de `setContratacion`: estado (`prueba`, `activo`, `suspendido`, `cancelado`) y vencimiento. */
137
+ type AdminSetContratacionInput = SetContratacionRequest;
138
+ /** Contratación de un producto tras escribirla. */
139
+ type AdminContratacionResult = ContratacionResponse['data'];
140
+ /**
141
+ * Tipo del cliente Admin retornado por `createAdminClient`.
142
+ */
143
+ type AdminClient = {
144
+ createServiceClient(input: CreateServiceClientInput): Promise<Result<CreateServiceClientResult>>;
145
+ listServiceClients(): Promise<Result<{
146
+ clientes: ServiceClientPublic[];
147
+ }>>;
148
+ getServiceClient(slug: string): Promise<Result<{
149
+ cliente: ServiceClientPublic;
150
+ }>>;
151
+ updateServiceClient(slug: string, input: UpdateServiceClientInput): Promise<Result<UpdateServiceClientResult>>;
152
+ deleteServiceClient(slug: string): Promise<Result<void>>;
153
+ rotateServiceClientSecret(slug: string): Promise<Result<RotateSecretResult>>;
154
+ listServiceClientGrants(slug: string): Promise<Result<ListServiceClientGrantsResult>>;
155
+ /** Crea o reemplaza la concesión del client sobre una audiencia. */
156
+ setServiceClientGrant(slug: string, input: SetServiceClientGrantInput): Promise<Result<{
157
+ grant: ServiceClientGrant;
158
+ }>>;
159
+ deleteServiceClientGrant(slug: string, audience: string): Promise<Result<void>>;
160
+ /** Lista las aristas de delegación del client (token exchange). */
161
+ listServiceClientDelegations(slug: string): Promise<Result<ListServiceClientDelegationsResult>>;
162
+ /** Crea o reemplaza la arista del client hacia una audiencia delegable (`scopes`, `requiere_scope_origen`). */
163
+ setServiceClientDelegation(slug: string, input: SetServiceClientDelegationInput): Promise<Result<{
164
+ delegation: ServiceClientDelegation;
165
+ }>>;
166
+ deleteServiceClientDelegation(slug: string, audience: string): Promise<Result<void>>;
167
+ /** Permisos entre empresas que el producto puede conceder en nombre de sus empresas. */
168
+ getProductoPermisosAutorizables(slug: string): Promise<Result<ProductoPermisosAutorizablesResult>>;
169
+ /** Reemplaza la lista de permisos autorizables del producto (vacía = ninguno). */
170
+ setProductoPermisosAutorizables(slug: string, input: SetProductoPermisosAutorizablesInput): Promise<Result<ProductoPermisosAutorizablesResult>>;
171
+ /** Reasigna el titular de una empresa (disputa de RUC o empresa sin titular). */
172
+ reassignEmpresaTitular(empresaId: string, input: ReassignEmpresaTitularInput): Promise<Result<ReassignEmpresaTitularResult>>;
173
+ /** Da de baja una empresa (limpia sus sesiones activas; las autorizaciones y contrataciones dejan de valer). */
174
+ bajaEmpresa(empresaId: string): Promise<Result<AdminEmpresaEstadoResult>>;
175
+ /** Reactiva una empresa de baja. */
176
+ reactivarEmpresa(empresaId: string): Promise<Result<AdminEmpresaEstadoResult>>;
177
+ /** Escribe el estado y el vencimiento de la contratación de un producto por una empresa (hasta que exista facturación, así se activa a mano). */
178
+ setContratacion(empresaId: string, producto: string, input: AdminSetContratacionInput): Promise<Result<AdminContratacionResult>>;
179
+ /** Lista los productos (la audiencia del access token de usuario). */
180
+ listProductos(): Promise<Result<ListProductosResult>>;
181
+ /** Crea un producto (201). 409 si el slug existe; 400 si es una audiencia de servicio. */
182
+ createProducto(input: CreateProductoInput): Promise<Result<ProductoResult>>;
183
+ /** Actualiza `nombre` o `enabled`. 404 si no existe; 400 con body vacío. No hay delete: se deshabilita. */
184
+ updateProducto(slug: string, input: UpdateProductoInput): Promise<Result<ProductoResult>>;
185
+ restoreUser(userId: string): Promise<Result<RestoreUserResult>>;
186
+ republishPendingWebhooks(query?: RepublishPendingWebhooksQuery): Promise<Result<RepublishPendingWebhooksResult>>;
187
+ maintenanceCleanup(query?: MaintenanceCleanupQuery): Promise<Result<MaintenanceCleanupResult>>;
188
+ };
189
+ /**
190
+ * Crea un cliente Admin para provisioning del Auth Service.
191
+ *
192
+ * ADVERTENCIA: solo usar desde backends o herramientas de operador seguras — el secret del
193
+ * service client admin nunca debe exponerse en el cliente/browser.
194
+ *
195
+ * @example
196
+ * ```ts
197
+ * const admin = createAdminClient({
198
+ * clientId: process.env.AUTH_ADMIN_SLUG,
199
+ * secretHex: process.env.AUTH_ADMIN_SECRET,
200
+ * baseUrl: 'https://auth.miapp.com',
201
+ * })
202
+ * const result = await admin.createServiceClient({ slug: 'mi-servicio' })
203
+ * if (!result.ok) return handleError(result.error)
204
+ * console.log('Secret (guardar ahora):', result.data.secret)
205
+ * ```
206
+ */
207
+ declare function createAdminClient(config: AdminClientConfig): AdminClient;
208
+ /**
209
+ * Códigos de error específicos del módulo Admin.
210
+ *
211
+ * Complementan a `ERROR_CODES` (core) para errores que solo ocurren
212
+ * en operaciones de provisioning de service clients.
213
+ *
214
+ * @example
215
+ * ```ts
216
+ * import { ADMIN_ERROR_CODES } from '@eva_solutions/auth-sdk/admin'
217
+ *
218
+ * if (!result.ok && result.error.code === ADMIN_ERROR_CODES.service_client_already_exists) {
219
+ * return res.status(409).json({ error: 'El service client ya existe' })
220
+ * }
221
+ * ```
222
+ */
223
+ declare const ADMIN_ERROR_CODES: {
224
+ readonly service_client_already_exists: "service_client_already_exists";
225
+ readonly service_client_not_found: "service_client_not_found";
226
+ /**
227
+ * `rotate-secret` perdió contra otra rotación concurrente del mismo service client (409).
228
+ * El perdedor no recibe secret; es reintentable.
229
+ */
230
+ readonly service_client_secret_rotation_conflict: "service_client_secret_rotation_conflict";
231
+ /**
232
+ * La operación dejaría al sistema sin ningún service client admin habilitado (409): borrar,
233
+ * deshabilitar o quitarle `esAdmin` al último. No se aplica; habilita o crea otro admin.
234
+ */
235
+ readonly last_admin_client: "last_admin_client";
236
+ };
237
+ /** Unión de literales de los error codes específicos del módulo Admin. */
238
+ type AdminErrorCode = (typeof ADMIN_ERROR_CODES)[keyof typeof ADMIN_ERROR_CODES];
239
+ export { SetServiceClientGrantInput as A, RestoreUserResult as C, ServiceClientPublic as D, ServiceClientGrant as E, UpdateServiceClientInput as M, UpdateServiceClientResult as N, SetProductoPermisosAutorizablesInput as O, AccountState as P, RepublishPendingWebhooksResult as S, ServiceClientDelegation as T, ProductoPermisosAutorizablesResult as _, AdminClientConfig as a, ReassignEmpresaTitularResult as b, AdminSetContratacionInput as c, CreateServiceClientResult as d, ListProductosResult as f, MaintenanceCleanupResult as g, MaintenanceCleanupQuery as h, createAdminClient as i, UpdateProductoInput as j, SetServiceClientDelegationInput as k, CreateProductoInput as l, ListServiceClientGrantsResult as m, AdminErrorCode as n, AdminContratacionResult as o, ListServiceClientDelegationsResult as p, AdminClient as r, AdminEmpresaEstadoResult as s, ADMIN_ERROR_CODES as t, CreateServiceClientInput as u, ProductoResult as v, RotateSecretResult as w, RepublishPendingWebhooksQuery as x, ReassignEmpresaTitularInput as y };
240
+ //# sourceMappingURL=index-DBZoLU4E.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DBZoLU4E.d.ts","names":["ContractServiceClientPublic","ContractServiceClientGrant","ContractServiceClientDelegation"],"sources":["../src/account-states.ts","../src/admin/types.ts","../src/admin/client.ts","../src/admin/error-codes.ts"],"mappings":";;;KAuBY,uBAAuB,6BAA6B;;;;;KCgBpD;;EAEV;;EAEA;;;;;EAKA;;;;;;;KAQU,sBAAsBA;;;;;KAMtB,2BAA2B;;KAG3B,sBAAsB;;KAGtB,sBAAsB;;KAGtB,sBAAsB;;KAGtB,iBAAiB;;KAGjB,qBAAqBC;;;;;KAMrB,6BAA6B;;KAG7B,gCACV;;;;;KAMU,4BAA4B;;;;;KAM5B,2BAA2B;;;;KAK3B,4BAA4B;;;;;KAM5B,qBAAqB;;;;;;;;KASrB;EACV;;EAEA,cAAc;EACd;EACA;;;;;;;KAQU;;EAEV;;EAEA;;;;;;KAOU,iCAAiC;;;;;KAMjC;;EAEV;;;;;;;KAQU,2BAA2B;;;;;KAM3B,0BAA0BC;;;;;KAM1B,kCAAkC;;KAGlC,qCACV;;KAGU,uCACV;;KAGU,qCACV;;;;;KAMU,8BAA8B;;KAG9B,+BAA+B;;KAG/B,2BAA2B;;KAG3B,4BAA4B;;KAG5B,0BAA0B;;;;KClH1B;EACV,oBACE,OAAO,2BACN,QAAQ,OAAO;EAClB,sBAAsB,QAAQ;IAAS,UAAU;;EACjD,iBACE,eACC,QAAQ;IAAS,SAAS;;EAC7B,oBACE,cACA,OAAO,2BACN,QAAQ,OAAO;EAClB,oBAAoB,eAAe,QAAQ;EAC3C,0BAA0B,eAAe,QAAQ,OAAO;EACxD,wBACE,eACC,QAAQ,OAAO;;EAElB,sBACE,cACA,OAAO,6BACN,QAAQ;IAAS,OAAO;;EAC3B,yBACE,cACA,mBACC,QAAQ;;EAEX,6BACE,eACC,QAAQ,OAAO;;EAElB,2BACE,cACA,OAAO,kCACN,QAAQ;IAAS,YAAY;;EAChC,8BACE,cACA,mBACC,QAAQ;;EAEX,gCACE,eACC,QAAQ,OAAO;;EAElB,gCACE,cACA,OAAO,uCACN,QAAQ,OAAO;;EAElB,uBACE,mBACA,OAAO,8BACN,QAAQ,OAAO;;EAElB,YAAY,oBAAoB,QAAQ,OAAO;;EAE/C,iBAAiB,oBAAoB,QAAQ,OAAO;;EAEpD,gBACE,mBACA,kBACA,OAAO,4BACN,QAAQ,OAAO;;EAElB,iBAAiB,QAAQ,OAAO;;EAEhC,eAAe,OAAO,sBAAsB,QAAQ,OAAO;;EAE3D,eACE,cACA,OAAO,sBACN,QAAQ,OAAO;EAClB,YAAY,iBAAiB,QAAQ,OAAO;EAC5C,yBACE,QAAQ,gCACP,QAAQ,OAAO;EAClB,mBACE,QAAQ,0BACP,QAAQ,OAAO;;;;;;;;;;;;;;;;;;;;iBA0HJ,kBAAkB,QAAQ,oBAAoB;;;;;;;;;;;;;;;;cChRjD;;;;;;;;;;;;;;;KAiBD,yBACF,gCAAgC"}
@@ -0,0 +1,66 @@
1
+ import "./index-Dold-Ycb.cjs";
2
+ import "./types-B5sf7kKE.cjs";
3
+ /**
4
+ * Verificación de firma HMAC-SHA-256 de webhooks entrantes del Auth Service.
5
+ *
6
+ * REQ-WH-03, REQ-WH-04, REQ-WH-05, REQ-WH-06 LOCKED.
7
+ *
8
+ * Algoritmo (espejo del API `firmarWebhook` en webhook-dispatcher.ts):
9
+ * canonical = `${timestamp}\n${eventId}\n${sha256Hex(rawBody)}`
10
+ * expected = HMAC-SHA-256(signingKey, canonical)
11
+ *
12
+ * Usa Web Crypto API (`crypto.subtle`) — isomorfo (browser + worker + Node 20+).
13
+ *
14
+ * D-12 LOCKED: hexToBytes y sha256Hex se duplican aquí (NO se extraen a shared)
15
+ * para que el entry point ./webhooks sea completamente tree-shakeable.
16
+ */
17
+ type VerifyWebhookSignatureParams = {
18
+ /** Body raw del request (string, antes de parsear JSON). */
19
+ rawBody: string;
20
+ /**
21
+ * Signing key del webhook — hex 64 chars (32 bytes).
22
+ * Es el `signingKey` que devolvió el API al crear/rotar la subscription.
23
+ * NOTA H3 LOCKED: NO re-hashear — usarlo tal como viene.
24
+ */
25
+ signingKey: string;
26
+ /**
27
+ * Valor completo del header `X-Eva-Webhook-Signature`.
28
+ * Debe comenzar con `"sha256="`.
29
+ */
30
+ signature: string;
31
+ /** Valor del header `X-Eva-Webhook-Id` (UUID del evento). */
32
+ eventId: string;
33
+ /**
34
+ * Valor del header `X-Eva-Webhook-Timestamp` parseado a number
35
+ * (unix seconds).
36
+ */
37
+ timestamp: number;
38
+ /**
39
+ * Override del tiempo actual (unix seconds) para tests.
40
+ * Por defecto: `Math.floor(Date.now() / 1000)`.
41
+ */
42
+ now?: number;
43
+ };
44
+ /**
45
+ * Verifica la firma HMAC-SHA-256 de un webhook entrante del Auth Service.
46
+ *
47
+ * @returns `true` si la firma es válida y está dentro de la ventana de tiempo;
48
+ * `false` en cualquier otro caso (firma inválida, expirada, formato incorrecto).
49
+ *
50
+ * La comparación es constant-time via `crypto.subtle.verify` (por spec).
51
+ *
52
+ * @example
53
+ * ```ts
54
+ * const valid = await verifyWebhookSignature({
55
+ * rawBody: await req.text(),
56
+ * signingKey: process.env.WEBHOOK_SIGNING_KEY,
57
+ * signature: req.headers.get('x-eva-webhook-signature') ?? '',
58
+ * eventId: req.headers.get('x-eva-webhook-id') ?? '',
59
+ * timestamp: Number(req.headers.get('x-eva-webhook-timestamp')),
60
+ * })
61
+ * if (!valid) return new Response('Unauthorized', { status: 401 })
62
+ * ```
63
+ */
64
+ declare function verifyWebhookSignature({ rawBody, signingKey, signature, eventId, timestamp, now }: VerifyWebhookSignatureParams): Promise<boolean>;
65
+ export { verifyWebhookSignature as n, VerifyWebhookSignatureParams as t };
66
+ //# sourceMappingURL=index-DcvQWByo.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DcvQWByo.d.cts","names":[],"sources":["../src/webhooks/verify-signature.ts"],"mappings":";;;;;;;;;;;;;;;;KAqDY;;EAEV;;;;;;EAMA;;;;;EAKA;;EAEA;;;;;EAKA;;;;;EAKA;;;;;;;;;;;;;;;;;;;;;;iBAuBoB,yBACpB,SACA,YACA,WACA,SACA,WACA,OACC,+BAA+B"}