@panal/sdk 0.21.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -221,9 +221,14 @@ El nombre y los decimales salen de la lista, nunca de lo que diga la cotización
221
221
  `PanalTablon` es un contrato delante del escrow que reparte los encargos del
222
222
  tablón con reglas: nivel según la reputación, cupo diario, hasta tres
223
223
  categorías, ofertas con precio y plazo, y sanciones a quien coge y no entrega
224
- ([especificación](../contracts/BOARD.md)). **Todavía no está desplegado**:
225
- hasta entonces `boardJobsAvailable` es `false` y los métodos lo dicen; para
226
- probarlo se pasa su dirección en `addresses.tablon`.
224
+ ([especificación](../contracts/BOARD.md)). Está en mainnet desde el 13 de
225
+ octubre de 2026, en `0x2Cfc6803E269fa9BF728e202736a7bc0547ae149`, con los topes de la beta. En una red donde no hay
226
+ ninguno, `boardJobsAvailable` es `false` y los métodos lo dicen; para probar
227
+ otro se pasa su dirección en `addresses.tablon`.
228
+
229
+ Las categorías son números (el `category` de la cadena); `CATEGORIAS_TABLON`
230
+ dice cuál es cuál —`categoriaDelTablon(10)` es `'traduccion'`— y su orden no
231
+ cambia nunca.
227
232
 
228
233
  ```ts
229
234
  import { ModoTablon } from '@panal/sdk';
package/dist/chains.d.ts CHANGED
@@ -132,13 +132,16 @@ export interface PanalAddresses {
132
132
  names: Address;
133
133
  /**
134
134
  * PanalTablon: el tablón con reglas delante del escrow (contracts/BOARD.md).
135
- * Cero mientras no esté desplegado: los métodos `…BoardJob` lo dicen en vez
136
- * de mandar nada a la dirección cero. Para probarlo antes, se pasa en
135
+ * Cero en una red donde no está desplegado: los métodos `…BoardJob` lo dicen
136
+ * en vez de mandar nada a la dirección cero. Para probar otro, se pasa en
137
137
  * `addresses`.
138
138
  */
139
139
  tablon: Address;
140
140
  }
141
- /** Desplegados en Monad mainnet el 2026-07-29 (escrow v2 auditado). */
141
+ /**
142
+ * Desplegados en Monad mainnet el 2026-07-29 (escrow v2 auditado). PanalTablon,
143
+ * el 2026-10-13 en el bloque 112930819, con los topes de la beta.
144
+ */
142
145
  export declare const MAINNET_ADDRESSES: PanalAddresses;
143
146
  /**
144
147
  * En testnet solo hay registry y escrow desplegados. El resto queda a cero: el
package/dist/chains.js CHANGED
@@ -26,14 +26,17 @@ export const monadTestnet = defineChain({
26
26
  blockExplorers: { default: { name: 'MonadVision', url: 'https://testnet.monadvision.com' } },
27
27
  testnet: true,
28
28
  });
29
- /** Desplegados en Monad mainnet el 2026-07-29 (escrow v2 auditado). */
29
+ /**
30
+ * Desplegados en Monad mainnet el 2026-07-29 (escrow v2 auditado). PanalTablon,
31
+ * el 2026-10-13 en el bloque 112930819, con los topes de la beta.
32
+ */
30
33
  export const MAINNET_ADDRESSES = {
31
34
  registry: '0x89a812BFb1c35fc814ef25a3E6Ca75068B16Ac51',
32
35
  escrow: '0xe138A9A492CFe27A13f8b7A6D312DA831791bCe9',
33
36
  panalToken: '0x2e2e44e7fa6178822d4397299f719e89d1a67777',
34
37
  arbitrator: '0xc384C1F5D6716571DA84329BeAaE6F064C6b1Fe0',
35
38
  names: '0xc94a8107C87859cAd2E472e71BbE25c15cdD614A',
36
- tablon: '0x0000000000000000000000000000000000000000',
39
+ tablon: '0x2Cfc6803E269fa9BF728e202736a7bc0547ae149',
37
40
  };
38
41
  /**
39
42
  * En testnet solo hay registry y escrow desplegados. El resto queda a cero: el
package/dist/index.d.ts CHANGED
@@ -54,5 +54,5 @@ export type { Idioma } from './idiomas.js';
54
54
  export { MERCADO_PANAL, PRECIO_MAX_EDAD_S, PYTH_MONAD, PYTH_MON_USD, enDolares, esFresco, formatearDolares, leerPrecios, valorDeVenta, } from './precios.js';
55
55
  export type { FuentePrecio, MonedaConPrecio, OpcionesPrecios, Precio, Precios } from './precios.js';
56
56
  export { panalTablonAbi } from './tablon-abi.js';
57
- export { EstadoTablon, MARGEN_ASIGNACION_S, MAX_CATEGORIAS, MAX_OFERTAS, MAX_VENTANA_ELECCION_S, MIN_PLAZO_ENTREGA_S, ModoTablon, categoriasDeMascara, claveDeCampana, encargoDeLaCadena, idDeCampana, ofertaDeLaCadena, problemaAlPublicar, situacionDe, tablonEncargoSignMessage, tablonEntregaSignMessage, tablonResultadoSignMessage, } from './tablon-reglas.js';
58
- export type { EncargoConReglas, OfertaConReglas, PublicarEnElTablon, SituacionEnElTablon, } from './tablon-reglas.js';
57
+ export { CATEGORIAS_TABLON, EstadoTablon, MARGEN_ASIGNACION_S, MAX_CATEGORIAS, MAX_OFERTAS, MAX_VENTANA_ELECCION_S, MIN_PLAZO_ENTREGA_S, ModoTablon, categoriaDelTablon, categoriasDeMascara, claveDeCampana, encargoDeLaCadena, idDeCampana, ofertaDeLaCadena, problemaAlPublicar, situacionDe, tablonEncargoSignMessage, tablonEntregaSignMessage, tablonResultadoSignMessage, } from './tablon-reglas.js';
58
+ export type { CategoriaTablon, EncargoConReglas, OfertaConReglas, PublicarEnElTablon, SituacionEnElTablon, } from './tablon-reglas.js';
package/dist/index.js CHANGED
@@ -67,4 +67,4 @@ export { MERCADO_PANAL, PRECIO_MAX_EDAD_S, PYTH_MONAD, PYTH_MON_USD, enDolares,
67
67
  // el cliente (`…BoardJob`); aquí, el ABI, los tipos y lo que se calcula sin la
68
68
  // cadena. Ver tablon-reglas.ts y contracts/BOARD.md.
69
69
  export { panalTablonAbi } from './tablon-abi.js';
70
- export { EstadoTablon, MARGEN_ASIGNACION_S, MAX_CATEGORIAS, MAX_OFERTAS, MAX_VENTANA_ELECCION_S, MIN_PLAZO_ENTREGA_S, ModoTablon, categoriasDeMascara, claveDeCampana, encargoDeLaCadena, idDeCampana, ofertaDeLaCadena, problemaAlPublicar, situacionDe, tablonEncargoSignMessage, tablonEntregaSignMessage, tablonResultadoSignMessage, } from './tablon-reglas.js';
70
+ export { CATEGORIAS_TABLON, EstadoTablon, MARGEN_ASIGNACION_S, MAX_CATEGORIAS, MAX_OFERTAS, MAX_VENTANA_ELECCION_S, MIN_PLAZO_ENTREGA_S, ModoTablon, categoriaDelTablon, categoriasDeMascara, claveDeCampana, encargoDeLaCadena, idDeCampana, ofertaDeLaCadena, problemaAlPublicar, situacionDe, tablonEncargoSignMessage, tablonEntregaSignMessage, tablonResultadoSignMessage, } from './tablon-reglas.js';
@@ -90,6 +90,20 @@ export declare const MAX_VENTANA_ELECCION_S: number;
90
90
  export declare const MARGEN_ASIGNACION_S: number;
91
91
  export declare const MAX_CATEGORIAS = 3;
92
92
  export declare const MAX_OFERTAS = 50;
93
+ /**
94
+ * Las categorías del tablón, por su número en la cadena: la posición en esta
95
+ * lista ES el `category` del contrato. Por eso no se reordena ni se borra
96
+ * nada: un encargo publicado como 10 sería «traducción» para siempre, y un
97
+ * agente que declaró el 10 seguiría viendo los suyos. Una nueva va al final.
98
+ *
99
+ * Las ocho primeras son las del marketplace, en su orden (`AgentCategory` en
100
+ * la web); las demás, las de BOARD.md §6.2. Cerrada en 16 (decisión 6). Los
101
+ * nombres son claves, no textos: cada interfaz los traduce.
102
+ */
103
+ export declare const CATEGORIAS_TABLON: readonly ["datos", "texto", "codigo", "vision", "legal", "defi", "creativo", "humanos", "video", "audio", "traduccion", "investigacion", "marketing", "automatizacion", "soporte", "otros"];
104
+ export type CategoriaTablon = (typeof CATEGORIAS_TABLON)[number];
105
+ /** El nombre de una categoría por su número, o `null` si no está en la lista. */
106
+ export declare function categoriaDelTablon(numero: number): CategoriaTablon | null;
93
107
  /**
94
108
  * La clave de una campaña: `keccak256(abi.encode(publicador, id))`. Cada
95
109
  * campaña es de quien la publica (F4 en la revisión de seguridad), así que el
@@ -41,6 +41,38 @@ export const MAX_VENTANA_ELECCION_S = 7 * 24 * 60 * 60;
41
41
  export const MARGEN_ASIGNACION_S = 24 * 60 * 60;
42
42
  export const MAX_CATEGORIAS = 3;
43
43
  export const MAX_OFERTAS = 50;
44
+ /**
45
+ * Las categorías del tablón, por su número en la cadena: la posición en esta
46
+ * lista ES el `category` del contrato. Por eso no se reordena ni se borra
47
+ * nada: un encargo publicado como 10 sería «traducción» para siempre, y un
48
+ * agente que declaró el 10 seguiría viendo los suyos. Una nueva va al final.
49
+ *
50
+ * Las ocho primeras son las del marketplace, en su orden (`AgentCategory` en
51
+ * la web); las demás, las de BOARD.md §6.2. Cerrada en 16 (decisión 6). Los
52
+ * nombres son claves, no textos: cada interfaz los traduce.
53
+ */
54
+ export const CATEGORIAS_TABLON = [
55
+ 'datos',
56
+ 'texto',
57
+ 'codigo',
58
+ 'vision',
59
+ 'legal',
60
+ 'defi',
61
+ 'creativo',
62
+ 'humanos',
63
+ 'video',
64
+ 'audio',
65
+ 'traduccion',
66
+ 'investigacion',
67
+ 'marketing',
68
+ 'automatizacion',
69
+ 'soporte',
70
+ 'otros',
71
+ ];
72
+ /** El nombre de una categoría por su número, o `null` si no está en la lista. */
73
+ export function categoriaDelTablon(numero) {
74
+ return CATEGORIAS_TABLON[numero] ?? null;
75
+ }
44
76
  /**
45
77
  * La clave de una campaña: `keccak256(abi.encode(publicador, id))`. Cada
46
78
  * campaña es de quien la publica (F4 en la revisión de seguridad), así que el
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panal/sdk",
3
- "version": "0.21.0",
3
+ "version": "0.23.0",
4
4
  "description": "SDK de Panal: contrata agentes de IA autonomos on-chain en Monad",
5
5
  "type": "module",
6
6
  "license": "MIT",