@xyo-network/xl1-rpc 1.7.11 → 1.7.12

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 (61) hide show
  1. package/README.md +539 -261
  2. package/dist/neutral/engine/rpcMethodHandlersFromSigner.d.ts.map +1 -1
  3. package/dist/neutral/index.mjs +206 -91
  4. package/dist/neutral/index.mjs.map +1 -1
  5. package/dist/neutral/provider/host/Abstract.d.ts +13 -0
  6. package/dist/neutral/provider/host/Abstract.d.ts.map +1 -0
  7. package/dist/neutral/provider/host/JsonRpcXyoGateway.d.ts +2 -11
  8. package/dist/neutral/provider/host/JsonRpcXyoGateway.d.ts.map +1 -1
  9. package/dist/neutral/provider/host/MemoryXyoGateway.d.ts +22 -0
  10. package/dist/neutral/provider/host/MemoryXyoGateway.d.ts.map +1 -0
  11. package/dist/neutral/provider/host/PermissionsStore.d.ts +8 -0
  12. package/dist/neutral/provider/host/PermissionsStore.d.ts.map +1 -0
  13. package/dist/neutral/provider/host/getPermissionsStoreFromTransport.d.ts +5 -0
  14. package/dist/neutral/provider/host/getPermissionsStoreFromTransport.d.ts.map +1 -0
  15. package/dist/neutral/provider/host/index.d.ts +3 -0
  16. package/dist/neutral/provider/host/index.d.ts.map +1 -1
  17. package/dist/neutral/provider/provider/XyoConnection.d.ts +6 -9
  18. package/dist/neutral/provider/provider/XyoConnection.d.ts.map +1 -1
  19. package/dist/neutral/provider/signer/JsonRpcXyoSigner.d.ts +9 -2
  20. package/dist/neutral/provider/signer/JsonRpcXyoSigner.d.ts.map +1 -1
  21. package/dist/neutral/provider/signer/MemoryXyoSigner.d.ts +3 -1
  22. package/dist/neutral/provider/signer/MemoryXyoSigner.d.ts.map +1 -1
  23. package/dist/neutral/transport/HttpRpcTransport.d.ts.map +1 -1
  24. package/dist/neutral/types/schema/XyoSignerRpcSchemas.d.ts.map +1 -1
  25. package/dist/node/engine/rpcMethodHandlersFromSigner.d.ts.map +1 -1
  26. package/dist/node/index-node.mjs +208 -93
  27. package/dist/node/index-node.mjs.map +1 -1
  28. package/dist/node/provider/host/Abstract.d.ts +13 -0
  29. package/dist/node/provider/host/Abstract.d.ts.map +1 -0
  30. package/dist/node/provider/host/JsonRpcXyoGateway.d.ts +2 -11
  31. package/dist/node/provider/host/JsonRpcXyoGateway.d.ts.map +1 -1
  32. package/dist/node/provider/host/MemoryXyoGateway.d.ts +22 -0
  33. package/dist/node/provider/host/MemoryXyoGateway.d.ts.map +1 -0
  34. package/dist/node/provider/host/PermissionsStore.d.ts +8 -0
  35. package/dist/node/provider/host/PermissionsStore.d.ts.map +1 -0
  36. package/dist/node/provider/host/getPermissionsStoreFromTransport.d.ts +5 -0
  37. package/dist/node/provider/host/getPermissionsStoreFromTransport.d.ts.map +1 -0
  38. package/dist/node/provider/host/index.d.ts +3 -0
  39. package/dist/node/provider/host/index.d.ts.map +1 -1
  40. package/dist/node/provider/provider/XyoConnection.d.ts +6 -9
  41. package/dist/node/provider/provider/XyoConnection.d.ts.map +1 -1
  42. package/dist/node/provider/signer/JsonRpcXyoSigner.d.ts +9 -2
  43. package/dist/node/provider/signer/JsonRpcXyoSigner.d.ts.map +1 -1
  44. package/dist/node/provider/signer/MemoryXyoSigner.d.ts +3 -1
  45. package/dist/node/provider/signer/MemoryXyoSigner.d.ts.map +1 -1
  46. package/dist/node/transport/HttpRpcTransport.d.ts.map +1 -1
  47. package/dist/node/types/schema/XyoSignerRpcSchemas.d.ts.map +1 -1
  48. package/package.json +26 -25
  49. package/src/engine/rpcMethodHandlersFromSigner.ts +1 -0
  50. package/src/provider/host/Abstract.ts +30 -0
  51. package/src/provider/host/JsonRpcXyoGateway.ts +2 -28
  52. package/src/provider/host/MemoryXyoGateway.ts +84 -0
  53. package/src/provider/host/PermissionsStore.ts +8 -0
  54. package/src/provider/host/getPermissionsStoreFromTransport.ts +13 -0
  55. package/src/provider/host/index.ts +3 -0
  56. package/src/provider/provider/XyoConnection.ts +20 -10
  57. package/src/provider/signer/JsonRpcXyoSigner.ts +13 -2
  58. package/src/provider/signer/MemoryXyoSigner.ts +6 -1
  59. package/src/provider/signer/spec/RpcEngineXyoSigner.spec.ts +2 -2
  60. package/src/transport/HttpRpcTransport.ts +25 -16
  61. package/src/types/schema/XyoSignerRpcSchemas.ts +14 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryXyoGateway.d.ts","sourceRoot":"","sources":["../../../../src/provider/host/MemoryXyoGateway.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,KAAK,EACV,iBAAiB,EAAE,UAAU,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,SAAS,EACxF,MAAM,2BAA2B,CAAA;AAElC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,qBAAa,gBAAiB,SAAQ,kBAAkB;IACtD,OAAO,CAAC,mBAAmB,CAAC,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgD;IAC7E,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkB;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;gBAEvB,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB;IAMjE,IAAI,MAAM,IAAI,SAAS,CAEtB;IAED,gBAAgB,IAAI,qBAAqB,GAAG,SAAS;IAOrD,aAAa,CAAC,MAAM,EAAE,sBAAsB,GAAG,UAAU,CAAC,qBAAqB,CAAC;IAChF,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,UAAU,CAAC,qBAAqB,CAAC;IAuBzF,WAAW,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAQhE,cAAc,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC;IAIjD,kBAAkB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC;IAIlE,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC;IAIjE,OAAO,CAAC,gCAAgC;CAKzC"}
@@ -0,0 +1,8 @@
1
+ import type { Promisable } from '@xylabs/promise';
2
+ import type { InvokerPermission, Permission } from '@xyo-network/xl1-protocol';
3
+ export interface PermissionsStore {
4
+ getPermissions(): Promisable<InvokerPermission[]>;
5
+ requestPermissions(permissions: Permission[]): Promisable<boolean>;
6
+ revokePermissions(permissions: Permission[]): Promisable<boolean>;
7
+ }
8
+ //# sourceMappingURL=PermissionsStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PermissionsStore.d.ts","sourceRoot":"","sources":["../../../../src/provider/host/PermissionsStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAE9E,MAAM,WAAW,gBAAgB;IAC/B,cAAc,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAA;IACjD,kBAAkB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;IAClE,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;CAClE"}
@@ -0,0 +1,5 @@
1
+ import { type RpcTransport } from '../../transport/index.ts';
2
+ import type { XyoGatewayRpcSchemas } from '../../types/index.ts';
3
+ import type { PermissionsStore } from './PermissionsStore.ts';
4
+ export declare const getPermissionsStoreFromTransport: (transport: RpcTransport<typeof XyoGatewayRpcSchemas>) => PermissionsStore;
5
+ //# sourceMappingURL=getPermissionsStoreFromTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPermissionsStoreFromTransport.d.ts","sourceRoot":"","sources":["../../../../src/provider/host/getPermissionsStoreFromTransport.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,eAAO,MAAM,gCAAgC,GAAI,WAAW,YAAY,CAAC,OAAO,oBAAoB,CAAC,KAAG,gBAMvG,CAAA"}
@@ -1,2 +1,5 @@
1
+ export * from './Abstract.ts';
1
2
  export * from './JsonRpcXyoGateway.ts';
3
+ export * from './MemoryXyoGateway.ts';
4
+ export * from './PermissionsStore.ts';
2
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/provider/host/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/provider/host/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA"}
@@ -1,30 +1,27 @@
1
1
  import type { Address } from '@xylabs/hex';
2
2
  import type { Signed } from '@xyo-network/boundwitness-model';
3
- import type { Payload } from '@xyo-network/payload-model';
4
- import type { AllowedBlockPayload, HydratedTransaction, TransactionBoundWitness, TransactionFeesBigInt, XyoConnectionProvider, XyoNetwork, XyoRunner, XyoSigner, XyoViewer } from '@xyo-network/xl1-protocol';
3
+ import { type Payload } from '@xyo-network/payload-model';
4
+ import type { AllowedBlockPayload, HydratedTransaction, TransactionBoundWitness, TransactionFeesBigInt, TransactionSubmitterOptions, XyoConnectionProvider, XyoDataLakeProvider, XyoDataLakeViewer, XyoNetwork, XyoRunner, XyoSigner, XyoViewer } from '@xyo-network/xl1-protocol';
5
5
  export declare class XyoConnection implements XyoConnectionProvider {
6
6
  private readonly _network?;
7
7
  private readonly _runner?;
8
8
  private readonly _signer?;
9
+ private readonly _storage?;
9
10
  private readonly _viewer?;
10
11
  constructor(params?: {
11
12
  network?: XyoNetwork;
12
13
  runner?: XyoRunner;
13
14
  signer?: XyoSigner;
15
+ storage?: XyoDataLakeProvider | XyoDataLakeViewer;
14
16
  viewer?: XyoViewer;
15
17
  });
16
18
  get network(): XyoNetwork | undefined;
17
19
  get runner(): XyoRunner | undefined;
18
20
  get signer(): XyoSigner | undefined;
21
+ get storage(): XyoDataLakeProvider | XyoDataLakeViewer | undefined;
19
22
  get viewer(): XyoViewer | undefined;
20
23
  /** @deprecated use submitTransaction instead */
21
24
  send(elevatedPayloads: AllowedBlockPayload[], additionalPayloads: Payload[], chain?: Address, nbf?: number, exp?: number, from?: Address, fees?: TransactionFeesBigInt): Promise<Signed<TransactionBoundWitness>>;
22
- submitTransaction(elevatedPayloads: AllowedBlockPayload[], additionalPayloads: Payload[], { chain, exp, fees, from, nbf, }?: {
23
- chain?: Address;
24
- exp?: number;
25
- fees?: TransactionFeesBigInt;
26
- from?: Address;
27
- nbf?: number;
28
- }): Promise<HydratedTransaction>;
25
+ submitTransaction(elevatedPayloads: AllowedBlockPayload[], additionalPayloads: Payload[], { chain, exp, fees, from, nbf, }?: TransactionSubmitterOptions): Promise<HydratedTransaction>;
29
26
  }
30
27
  //# sourceMappingURL=XyoConnection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"XyoConnection.d.ts","sourceRoot":"","sources":["../../../../src/provider/provider/XyoConnection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAA;AAE7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EACnH,MAAM,2BAA2B,CAAA;AAGlC,qBAAa,aAAc,YAAW,qBAAqB;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAW;gBAExB,MAAM,CAAC,EAAE;QACnB,OAAO,CAAC,EAAE,UAAU,CAAA;QACpB,MAAM,CAAC,EAAE,SAAS,CAAA;QAClB,MAAM,CAAC,EAAE,SAAS,CAAA;QAClB,MAAM,CAAC,EAAE,SAAS,CAAA;KACnB;IAOD,IAAI,OAAO,IAAI,UAAU,GAAG,SAAS,CAEpC;IAED,IAAI,MAAM,IAAI,SAAS,GAAG,SAAS,CAElC;IAED,IAAI,MAAM,IAAI,SAAS,GAAG,SAAS,CAElC;IAED,IAAI,MAAM,IAAI,SAAS,GAAG,SAAS,CAElC;IAED,gDAAgD;IAC1C,IAAI,CACR,gBAAgB,EAAE,mBAAmB,EAAE,EACvC,kBAAkB,EAAE,OAAO,EAAE,EAC7B,KAAK,CAAC,EAAE,OAAO,EACf,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,qBAAqB,GAC3B,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAMrC,iBAAiB,CACrB,gBAAgB,EAAE,mBAAmB,EAAE,EACvC,kBAAkB,EAAE,OAAO,EAAE,EAC7B,EACE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,GAC5B,GAAE;QACD,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,IAAI,CAAC,EAAE,qBAAqB,CAAA;QAC5B,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,GAAG,CAAC,EAAE,MAAM,CAAA;KACR,GACL,OAAO,CAAC,mBAAmB,CAAC;CA2BhC"}
1
+ {"version":3,"file":"XyoConnection.d.ts","sourceRoot":"","sources":["../../../../src/provider/provider/XyoConnection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAA;AAG7D,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EAAE,qBAAqB,EAC9C,2BAA2B,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EACxI,MAAM,2BAA2B,CAAA;AAGlC,qBAAa,aAAc,YAAW,qBAAqB;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAyC;IACnE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAW;gBAExB,MAAM,CAAC,EAAE;QACnB,OAAO,CAAC,EAAE,UAAU,CAAA;QACpB,MAAM,CAAC,EAAE,SAAS,CAAA;QAClB,MAAM,CAAC,EAAE,SAAS,CAAA;QAClB,OAAO,CAAC,EAAE,mBAAmB,GAAG,iBAAiB,CAAA;QACjD,MAAM,CAAC,EAAE,SAAS,CAAA;KACnB;IAQD,IAAI,OAAO,IAAI,UAAU,GAAG,SAAS,CAEpC;IAED,IAAI,MAAM,IAAI,SAAS,GAAG,SAAS,CAElC;IAED,IAAI,MAAM,IAAI,SAAS,GAAG,SAAS,CAElC;IAED,IAAI,OAAO,IAAI,mBAAmB,GAAG,iBAAiB,GAAG,SAAS,CAEjE;IAED,IAAI,MAAM,IAAI,SAAS,GAAG,SAAS,CAElC;IAED,gDAAgD;IAC1C,IAAI,CACR,gBAAgB,EAAE,mBAAmB,EAAE,EACvC,kBAAkB,EAAE,OAAO,EAAE,EAC7B,KAAK,CAAC,EAAE,OAAO,EACf,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,qBAAqB,GAC3B,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAMrC,iBAAiB,CACrB,gBAAgB,EAAE,mBAAmB,EAAE,EACvC,kBAAkB,EAAE,OAAO,EAAE,EAC7B,EACE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,GAC5B,GAAE,2BAAgC,GAClC,OAAO,CAAC,mBAAmB,CAAC;CAkChC"}
@@ -1,13 +1,20 @@
1
1
  import { type Address } from '@xylabs/hex';
2
- import type { Signed } from '@xyo-network/boundwitness-model';
2
+ import type { Promisable } from '@xylabs/promise';
3
+ import type { Signed, UnsignedBoundWitness } from '@xyo-network/boundwitness-model';
3
4
  import type { Payload } from '@xyo-network/payload-model';
4
5
  import type { AllowedBlockPayload, TransactionBoundWitness, TransactionFeesBigInt, XyoSigner } from '@xyo-network/xl1-protocol';
5
6
  import type { RpcTransport } from '../../transport/index.ts';
6
7
  import type { XyoSignerRpcSchemas } from '../../types/index.ts';
7
- export declare class JsonRpcXyoSigner implements XyoSigner {
8
+ export declare class RpcXyoSigner implements XyoSigner {
8
9
  protected readonly transport: RpcTransport<typeof XyoSignerRpcSchemas>;
9
10
  constructor(transport: RpcTransport<typeof XyoSignerRpcSchemas>);
10
11
  address(): Promise<Address>;
11
12
  createSignedTransaction(chain: Address, elevatedPayloads: AllowedBlockPayload[], additionalPayloads: Payload[], nbf: number, exp: number, fees: TransactionFeesBigInt, from?: Address): Promise<Signed<TransactionBoundWitness>>;
13
+ signTransaction(tx: [UnsignedBoundWitness<TransactionBoundWitness>, Payload[]]): Promisable<[Signed<TransactionBoundWitness>, Payload[]]>;
14
+ }
15
+ /**
16
+ * @deprecated Use `RpcXyoSigner` instead.
17
+ */
18
+ export declare class JsonRpcXyoSigner extends RpcXyoSigner {
12
19
  }
13
20
  //# sourceMappingURL=JsonRpcXyoSigner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"JsonRpcXyoSigner.d.ts","sourceRoot":"","sources":["../../../../src/provider/signer/JsonRpcXyoSigner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAA;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,SAAS,EACV,MAAM,2BAA2B,CAAA;AAElC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC/D,qBAAa,gBAAiB,YAAW,SAAS;IAChD,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,mBAAmB,CAAC,CAAA;gBAE1D,SAAS,EAAE,YAAY,CAAC,OAAO,mBAAmB,CAAC;IAIzD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAI3B,uBAAuB,CAC3B,KAAK,EAAE,OAAO,EACd,gBAAgB,EAAE,mBAAmB,EAAE,EACvC,kBAAkB,EAAE,OAAO,EAAE,EAC7B,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,qBAAqB,EAC3B,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;CAW5C"}
1
+ {"version":3,"file":"JsonRpcXyoSigner.d.ts","sourceRoot":"","sources":["../../../../src/provider/signer/JsonRpcXyoSigner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AACnF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,SAAS,EACV,MAAM,2BAA2B,CAAA;AAElC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAE/D,qBAAa,YAAa,YAAW,SAAS;IAC5C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,mBAAmB,CAAC,CAAA;gBAE1D,SAAS,EAAE,YAAY,CAAC,OAAO,mBAAmB,CAAC;IAIzD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAI3B,uBAAuB,CAC3B,KAAK,EAAE,OAAO,EACd,gBAAgB,EAAE,mBAAmB,EAAE,EACvC,kBAAkB,EAAE,OAAO,EAAE,EAC7B,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,qBAAqB,EAC3B,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAY3C,eAAe,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,MAAM,CAAC,uBAAuB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;CAG1I;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;CAAG"}
@@ -1,6 +1,7 @@
1
1
  import type { Address } from '@xylabs/hex';
2
+ import type { Promisable } from '@xylabs/promise';
2
3
  import type { AccountInstance } from '@xyo-network/account-model';
3
- import type { Signed } from '@xyo-network/boundwitness-model';
4
+ import type { Signed, UnsignedBoundWitness } from '@xyo-network/boundwitness-model';
4
5
  import { type Payload } from '@xyo-network/payload-model';
5
6
  import type { AllowedBlockPayload, TransactionBoundWitness, TransactionFeesBigInt, XyoSigner } from '@xyo-network/xl1-protocol';
6
7
  export declare class MemoryXyoSigner implements XyoSigner {
@@ -8,5 +9,6 @@ export declare class MemoryXyoSigner implements XyoSigner {
8
9
  constructor(account: AccountInstance);
9
10
  address(): Address;
10
11
  createSignedTransaction(chain: Address, elevatedPayloads: AllowedBlockPayload[], additionalPayloads: Payload[], nbf: number, exp: number, fees: TransactionFeesBigInt, from?: Address): Promise<Signed<TransactionBoundWitness>>;
12
+ signTransaction(_tx: [UnsignedBoundWitness<TransactionBoundWitness>, Payload[]]): Promisable<[Signed<TransactionBoundWitness>, Payload[]]>;
11
13
  }
12
14
  //# sourceMappingURL=MemoryXyoSigner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryXyoSigner.d.ts","sourceRoot":"","sources":["../../../../src/provider/signer/MemoryXyoSigner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAA;AAC7D,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,KAAK,EACV,mBAAmB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,SAAS,EAC/E,MAAM,2BAA2B,CAAA;AAGlC,qBAAa,eAAgB,YAAW,SAAS;IAC/C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAA;gBAEhC,OAAO,EAAE,eAAe;IAIpC,OAAO,IAAI,OAAO;IAIZ,uBAAuB,CAC3B,KAAK,EAAE,OAAO,EACd,gBAAgB,EAAE,mBAAmB,EAAE,EACvC,kBAAkB,EAAE,OAAO,EAAE,EAC7B,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,qBAAqB,EAC3B,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;CAc5C"}
1
+ {"version":3,"file":"MemoryXyoSigner.d.ts","sourceRoot":"","sources":["../../../../src/provider/signer/MemoryXyoSigner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AACnF,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,KAAK,EACV,mBAAmB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,SAAS,EAC/E,MAAM,2BAA2B,CAAA;AAGlC,qBAAa,eAAgB,YAAW,SAAS;IAC/C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAA;gBAEhC,OAAO,EAAE,eAAe;IAIpC,OAAO,IAAI,OAAO;IAIZ,uBAAuB,CAC3B,KAAK,EAAE,OAAO,EACd,gBAAgB,EAAE,mBAAmB,EAAE,EACvC,kBAAkB,EAAE,OAAO,EAAE,EAC7B,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,qBAAqB,EAC3B,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAe3C,eAAe,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,MAAM,CAAC,uBAAuB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;CAG3I"}
@@ -1 +1 @@
1
- {"version":3,"file":"HttpRpcTransport.d.ts","sourceRoot":"","sources":["../../../src/transport/HttpRpcTransport.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAE5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,qBAAa,gBAAgB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,CAAE,YAAW,YAAY,CAAC,CAAC,CAAC;IAC7F,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IAClC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAElB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAKhC,WAAW,CACf,OAAO,SAAS,MAAM,CAAC,GAAG,MAAM,EAEhC,MAAM,EAAE,OAAO,EACf,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,GAC3C,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YAInC,OAAO;CA6BtB"}
1
+ {"version":3,"file":"HttpRpcTransport.d.ts","sourceRoot":"","sources":["../../../src/transport/HttpRpcTransport.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAE5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,qBAAa,gBAAgB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,CAAE,YAAW,YAAY,CAAC,CAAC,CAAC;IAC7F,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IAClC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAElB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAKhC,WAAW,CACf,OAAO,SAAS,MAAM,CAAC,GAAG,MAAM,EAEhC,MAAM,EAAE,OAAO,EACf,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,GAC3C,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YAInC,OAAO;CAqCtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"XyoSignerRpcSchemas.d.ts","sourceRoot":"","sources":["../../../../src/types/schema/XyoSignerRpcSchemas.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAKhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,eAAO,MAAM,mBAAmB,EAAE,YAAY,CAAC,sBAAsB,CAqCpE,CAAA"}
1
+ {"version":3,"file":"XyoSignerRpcSchemas.d.ts","sourceRoot":"","sources":["../../../../src/types/schema/XyoSignerRpcSchemas.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAQhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,eAAO,MAAM,mBAAmB,EAAE,YAAY,CAAC,sBAAsB,CA+CpE,CAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json.schemastore.org/package.json",
3
3
  "name": "@xyo-network/xl1-rpc",
4
- "version": "1.7.11",
4
+ "version": "1.7.12",
5
5
  "description": "XYO Layer One API",
6
6
  "homepage": "https://xylabs.com",
7
7
  "bugs": {
@@ -59,35 +59,36 @@
59
59
  "dependencies": {
60
60
  "@metamask/json-rpc-engine": "^10.0.3",
61
61
  "@metamask/utils": "^11.4.2",
62
- "@xylabs/assert": "^4.13.21",
63
- "@xylabs/axios": "^4.13.21",
64
- "@xylabs/delay": "^4.13.21",
65
- "@xylabs/hex": "^4.13.21",
66
- "@xylabs/object": "^4.13.21",
67
- "@xylabs/promise": "^4.13.21",
68
- "@xylabs/typeof": "^4.13.21",
69
- "@xyo-network/account-model": "^4.1.6",
70
- "@xyo-network/archivist-memory": "^4.1.6",
71
- "@xyo-network/archivist-model": "^4.1.6",
72
- "@xyo-network/boundwitness-model": "^4.1.6",
73
- "@xyo-network/module-model": "^4.1.6",
74
- "@xyo-network/node-model": "^4.1.6",
75
- "@xyo-network/payload-builder": "^4.1.6",
76
- "@xyo-network/payload-model": "^4.1.6",
77
- "@xyo-network/payload-wrapper": "^4.1.6",
78
- "@xyo-network/xl1-protocol": "^1.7.10",
79
- "@xyo-network/xl1-protocol-sdk": "^1.7.11",
80
- "axios": "^1.10.0",
62
+ "@xylabs/assert": "^4.13.23",
63
+ "@xylabs/axios": "^4.13.23",
64
+ "@xylabs/delay": "^4.13.23",
65
+ "@xylabs/hex": "^4.13.23",
66
+ "@xylabs/object": "^4.13.23",
67
+ "@xylabs/promise": "^4.13.23",
68
+ "@xylabs/typeof": "^4.13.23",
69
+ "@xyo-network/account-model": "^4.1.7",
70
+ "@xyo-network/archivist-memory": "^4.1.7",
71
+ "@xyo-network/archivist-model": "^4.1.7",
72
+ "@xyo-network/boundwitness-model": "^4.1.7",
73
+ "@xyo-network/chain-wrappers": "^1.7.12",
74
+ "@xyo-network/module-model": "^4.1.7",
75
+ "@xyo-network/node-model": "^4.1.7",
76
+ "@xyo-network/payload-builder": "^4.1.7",
77
+ "@xyo-network/payload-model": "^4.1.7",
78
+ "@xyo-network/payload-wrapper": "^4.1.7",
79
+ "@xyo-network/xl1-protocol": "^1.7.19",
80
+ "@xyo-network/xl1-protocol-sdk": "^1.7.12",
81
+ "axios": "^1.11.0",
81
82
  "uuid": "^11.1.0",
82
83
  "zod": "^3.25.76"
83
84
  },
84
85
  "devDependencies": {
85
86
  "@metamask/utils": "^11.4.2",
86
- "@types/node": "^24.0.15",
87
- "@xylabs/ts-scripts-yarn3": "^7.0.0",
88
- "@xylabs/tsconfig": "^7.0.0",
89
- "@xylabs/vitest-extended": "^4.13.21",
90
- "@xyo-network/account": "^4.1.6",
87
+ "@types/node": "^24.1.0",
88
+ "@xylabs/ts-scripts-yarn3": "^7.0.1",
89
+ "@xylabs/tsconfig": "^7.0.1",
90
+ "@xylabs/vitest-extended": "^4.13.23",
91
+ "@xyo-network/account": "^4.1.7",
91
92
  "dotenv": "^17.2.0",
92
93
  "knip": "^5.62.0",
93
94
  "typescript": "^5.8.3",
@@ -6,5 +6,6 @@ export const rpcMethodHandlersFromSigner = (signer: XyoSigner): XyoSignerRpcMeth
6
6
  return {
7
7
  xyoSigner_address: params => signer.address(...(params ?? [])),
8
8
  xyoSigner_createSignedTransaction: params => signer.createSignedTransaction(...(params ?? [])),
9
+ xyoSigner_signTransaction: params => signer.signTransaction(...(params ?? [])),
9
10
  }
10
11
  }
@@ -0,0 +1,30 @@
1
+ import { assertEx } from '@xylabs/assert'
2
+ import type { Promisable } from '@xylabs/promise'
3
+ import type { Payload } from '@xyo-network/payload-model'
4
+ import type {
5
+ AllowedBlockPayload,
6
+ HydratedTransaction,
7
+ InvokerPermission, Permission,
8
+ XyoConnectionProvider,
9
+ XyoGatewayProvider,
10
+ XyoRpcConnectionConfig,
11
+ } from '@xyo-network/xl1-protocol'
12
+
13
+ export abstract class AbstractXyoGateway implements XyoGatewayProvider {
14
+ async submitTransaction(elevatedPayloads: AllowedBlockPayload[], additionalPayloads: Payload[]): Promise<HydratedTransaction> {
15
+ return assertEx(
16
+ assertEx(
17
+ await this.activeConnection(),
18
+ () => 'No active connection available for transaction submission',
19
+ ).submitTransaction,
20
+ () => 'Active connection does not support transaction submission',
21
+ )(elevatedPayloads, additionalPayloads)
22
+ }
23
+
24
+ abstract activeConnection(): Promisable<XyoConnectionProvider | undefined>
25
+ abstract addConnection(config: XyoRpcConnectionConfig): Promisable<XyoConnectionProvider>
26
+ abstract connections(): Promisable<Record<string, XyoConnectionProvider>>
27
+ abstract getPermissions(): Promisable<InvokerPermission[]>
28
+ abstract requestPermissions(permissions: Permission[]): Promisable<boolean>
29
+ abstract revokePermissions(permissions: Permission[]): Promisable<boolean>
30
+ }
@@ -1,37 +1,11 @@
1
- import { assertEx } from '@xylabs/assert'
2
- import type { Hash } from '@xylabs/hex'
3
1
  import type { Promisable } from '@xylabs/promise'
4
- import type { Payload } from '@xyo-network/payload-model'
5
2
  import type {
6
- AllowedBlockPayload,
7
- HydratedTransaction,
8
- InvokerPermission, Permission,
9
- XyoConnectionProvider,
10
- XyoGatewayProvider,
11
- XyoRpcConnectionConfig,
3
+ InvokerPermission, Permission, XyoConnectionProvider, XyoRpcConnectionConfig,
12
4
  } from '@xyo-network/xl1-protocol'
13
5
 
14
6
  import type { RpcTransport } from '../../transport/index.ts'
15
7
  import type { XyoGatewayRpcSchemas } from '../../types/index.ts'
16
-
17
- export abstract class AbstractXyoGateway implements XyoGatewayProvider {
18
- async submitTransaction(elevatedPayloads: AllowedBlockPayload[], additionalPayloads: Payload[]): Promise<HydratedTransaction> {
19
- return assertEx(
20
- assertEx(
21
- await this.activeConnection(),
22
- () => 'No active connection available for transaction submission',
23
- ).submitTransaction,
24
- () => 'Active connection does not support transaction submission',
25
- )(elevatedPayloads, additionalPayloads)
26
- }
27
-
28
- abstract activeConnection(): Promisable<XyoConnectionProvider | undefined>
29
- abstract addConnection(config: XyoRpcConnectionConfig): Promisable<XyoConnectionProvider>
30
- abstract connections(): Promisable<Record<string, XyoConnectionProvider>>
31
- abstract getPermissions(): Promisable<InvokerPermission[]>
32
- abstract requestPermissions(permissions: Permission[]): Promisable<boolean>
33
- abstract revokePermissions(permissions: Permission[]): Promisable<boolean>
34
- }
8
+ import { AbstractXyoGateway } from './Abstract.ts'
35
9
 
36
10
  export class JsonRpcXyoGateway extends AbstractXyoGateway {
37
11
  private readonly _transport: RpcTransport<typeof XyoGatewayRpcSchemas>
@@ -0,0 +1,84 @@
1
+ import type { Promisable } from '@xylabs/promise'
2
+ import { isDefined } from '@xylabs/typeof'
3
+ import type {
4
+ InvokerPermission, Permission, XyoConnectionProvider, XyoRpcConnectionConfig, XyoSigner,
5
+ } from '@xyo-network/xl1-protocol'
6
+
7
+ import type { XyoConnection } from '../provider/index.ts'
8
+ import { RpcXyoConnection } from '../provider/index.ts'
9
+ import { AbstractXyoGateway } from './Abstract.ts'
10
+ import type { PermissionsStore } from './PermissionsStore.ts'
11
+
12
+ export class MemoryXyoGateway extends AbstractXyoGateway {
13
+ private _activeConnectionId?: string
14
+ private readonly _connections: Map<string, XyoConnectionProvider> = new Map()
15
+ private readonly _permissionsStore: PermissionsStore
16
+ private readonly _signer: XyoSigner
17
+
18
+ constructor(signer: XyoSigner, permissionsStore: PermissionsStore) {
19
+ super()
20
+ this._signer = signer
21
+ this._permissionsStore = permissionsStore
22
+ }
23
+
24
+ get signer(): XyoSigner {
25
+ return this._signer
26
+ }
27
+
28
+ activeConnection(): XyoConnectionProvider | undefined {
29
+ return isDefined(this._activeConnectionId)
30
+ ? this._connections.get(this._activeConnectionId)
31
+ : undefined
32
+ }
33
+
34
+ // TODO: Deprecate connection config in favor of connection object
35
+ addConnection(config: XyoRpcConnectionConfig): Promisable<XyoConnectionProvider>
36
+ addConnection(name: string, connection: XyoConnection): Promisable<XyoConnectionProvider>
37
+ addConnection(configOrName: XyoRpcConnectionConfig | string, connection?: XyoConnection): Promisable<XyoConnectionProvider> {
38
+ if (typeof configOrName === 'string' && connection !== undefined) {
39
+ // Called with (name: string, connection: XyoConnection)
40
+ const name = configOrName
41
+ this._connections.set(name, connection)
42
+ this.setActiveConnectionIdIfUndefined(name)
43
+ return connection
44
+ } else if (typeof configOrName === 'object') {
45
+ // Called with (config: XyoRpcConnectionConfig)
46
+ const config = configOrName
47
+ const {
48
+ name, dataLakeEndpoint, networkEndpoint,
49
+ } = config
50
+ const rpcConnection = new RpcXyoConnection({ endpoint: networkEndpoint })
51
+ this._connections.set(name, rpcConnection)
52
+ this.setActiveConnectionIdIfUndefined(name)
53
+ return rpcConnection
54
+ }
55
+
56
+ throw new Error('Invalid arguments passed to addConnection')
57
+ }
58
+
59
+ connections(): Promisable<Record<string, XyoConnectionProvider>> {
60
+ const record: Record<string, XyoConnectionProvider> = {}
61
+ for (const [id, conn] of this._connections.entries()) {
62
+ record[id] = conn
63
+ }
64
+ return record
65
+ }
66
+
67
+ getPermissions(): Promisable<InvokerPermission[]> {
68
+ return this._permissionsStore.getPermissions()
69
+ }
70
+
71
+ requestPermissions(permissions: Permission[]): Promisable<boolean> {
72
+ return this._permissionsStore.requestPermissions(permissions)
73
+ }
74
+
75
+ revokePermissions(permissions: Permission[]): Promisable<boolean> {
76
+ return this._permissionsStore.revokePermissions(permissions)
77
+ }
78
+
79
+ private setActiveConnectionIdIfUndefined(id: string): void {
80
+ if (!isDefined(this._activeConnectionId)) {
81
+ this._activeConnectionId = id
82
+ }
83
+ }
84
+ }
@@ -0,0 +1,8 @@
1
+ import type { Promisable } from '@xylabs/promise'
2
+ import type { InvokerPermission, Permission } from '@xyo-network/xl1-protocol'
3
+
4
+ export interface PermissionsStore {
5
+ getPermissions(): Promisable<InvokerPermission[]>
6
+ requestPermissions(permissions: Permission[]): Promisable<boolean>
7
+ revokePermissions(permissions: Permission[]): Promisable<boolean>
8
+ }
@@ -0,0 +1,13 @@
1
+ import type { Permission } from '@xyo-network/xl1-protocol'
2
+
3
+ import { type RpcTransport } from '../../transport/index.ts'
4
+ import type { XyoGatewayRpcSchemas } from '../../types/index.ts'
5
+ import type { PermissionsStore } from './PermissionsStore.ts'
6
+
7
+ export const getPermissionsStoreFromTransport = (transport: RpcTransport<typeof XyoGatewayRpcSchemas>): PermissionsStore => {
8
+ return {
9
+ getPermissions: () => transport.sendRequest('xyoGateway_getPermissions'),
10
+ requestPermissions: (permissions: Permission[]) => transport.sendRequest('xyoGateway_requestPermissions', permissions),
11
+ revokePermissions: (permissions: Permission[]) => transport.sendRequest('xyoGateway_revokePermissions', permissions),
12
+ }
13
+ }
@@ -1 +1,4 @@
1
+ export * from './Abstract.ts'
1
2
  export * from './JsonRpcXyoGateway.ts'
3
+ export * from './MemoryXyoGateway.ts'
4
+ export * from './PermissionsStore.ts'
@@ -1,30 +1,35 @@
1
1
  import { assertEx } from '@xylabs/assert'
2
2
  import type { Address } from '@xylabs/hex'
3
3
  import type { Signed } from '@xyo-network/boundwitness-model'
4
+ import { HydratedTransactionWrapper } from '@xyo-network/chain-wrappers'
4
5
  import { PayloadBuilder } from '@xyo-network/payload-builder'
5
- import type { Payload } from '@xyo-network/payload-model'
6
+ import { isAnyPayload, type Payload } from '@xyo-network/payload-model'
6
7
  import type {
7
8
  AllowedBlockPayload,
8
9
  HydratedTransaction,
9
- TransactionBoundWitness, TransactionFeesBigInt, XyoConnectionProvider, XyoNetwork, XyoRunner, XyoSigner, XyoViewer,
10
+ TransactionBoundWitness, TransactionFeesBigInt,
11
+ TransactionSubmitterOptions, XyoConnectionProvider, XyoDataLakeProvider, XyoDataLakeViewer, XyoNetwork, XyoRunner, XyoSigner, XyoViewer,
10
12
  } from '@xyo-network/xl1-protocol'
11
- import { defaultTransactionFees } from '@xyo-network/xl1-protocol'
13
+ import { defaultTransactionFees, isDataLakeProvider } from '@xyo-network/xl1-protocol'
12
14
 
13
15
  export class XyoConnection implements XyoConnectionProvider {
14
16
  private readonly _network?: XyoNetwork
15
17
  private readonly _runner?: XyoRunner
16
18
  private readonly _signer?: XyoSigner
19
+ private readonly _storage?: XyoDataLakeProvider | XyoDataLakeViewer
17
20
  private readonly _viewer?: XyoViewer
18
21
 
19
22
  constructor(params?: {
20
23
  network?: XyoNetwork
21
24
  runner?: XyoRunner
22
25
  signer?: XyoSigner
26
+ storage?: XyoDataLakeProvider | XyoDataLakeViewer
23
27
  viewer?: XyoViewer
24
28
  }) {
25
29
  this._network = params?.network
26
30
  this._runner = params?.runner
27
31
  this._signer = params?.signer
32
+ this._storage = params?.storage
28
33
  this._viewer = params?.viewer
29
34
  }
30
35
 
@@ -40,6 +45,10 @@ export class XyoConnection implements XyoConnectionProvider {
40
45
  return this._signer
41
46
  }
42
47
 
48
+ get storage(): XyoDataLakeProvider | XyoDataLakeViewer | undefined {
49
+ return this._storage
50
+ }
51
+
43
52
  get viewer(): XyoViewer | undefined {
44
53
  return this._viewer
45
54
  }
@@ -64,17 +73,12 @@ export class XyoConnection implements XyoConnectionProvider {
64
73
  additionalPayloads: Payload[],
65
74
  {
66
75
  chain, exp, fees, from, nbf,
67
- }: {
68
- chain?: Address
69
- exp?: number
70
- fees?: TransactionFeesBigInt
71
- from?: Address
72
- nbf?: number
73
- } = {},
76
+ }: TransactionSubmitterOptions = {},
74
77
  ): Promise<HydratedTransaction> {
75
78
  const viewer = assertEx(this.viewer, () => 'No viewer available')
76
79
  const signer = assertEx(this.signer, () => 'No signer available')
77
80
  const runner = assertEx(this.runner, () => 'No runner available')
81
+ const storage = this.storage
78
82
  const chainResolved = chain ?? await viewer.chainId()
79
83
  if (chainResolved === undefined) throw new Error('Failed to determine chain')
80
84
  const nbfResolved = Math.max(await viewer.currentBlockNumber() ?? 0, nbf ?? 0)
@@ -94,6 +98,12 @@ export class XyoConnection implements XyoConnectionProvider {
94
98
  const hydratedTransaction: HydratedTransaction = [await PayloadBuilder.addStorageMeta(signedTransaction),
95
99
  await PayloadBuilder.addStorageMeta(elevatedPayloads)]
96
100
 
101
+ // if storage configured, add the external payloads to it
102
+ if (isDataLakeProvider(storage)) {
103
+ const wrapper = await HydratedTransactionWrapper.parse(hydratedTransaction)
104
+ await storage.add(Object.values(wrapper.externalPayloads).filter(isAnyPayload))
105
+ }
106
+
97
107
  assertEx(await runner.broadcastTransaction(hydratedTransaction), () => 'Failed to broadcast transaction')
98
108
 
99
109
  return hydratedTransaction
@@ -1,5 +1,6 @@
1
1
  import { type Address } from '@xylabs/hex'
2
- import type { Signed } from '@xyo-network/boundwitness-model'
2
+ import type { Promisable } from '@xylabs/promise'
3
+ import type { Signed, UnsignedBoundWitness } from '@xyo-network/boundwitness-model'
3
4
  import type { Payload } from '@xyo-network/payload-model'
4
5
  import type {
5
6
  AllowedBlockPayload,
@@ -10,7 +11,8 @@ import type {
10
11
 
11
12
  import type { RpcTransport } from '../../transport/index.ts'
12
13
  import type { XyoSignerRpcSchemas } from '../../types/index.ts'
13
- export class JsonRpcXyoSigner implements XyoSigner {
14
+
15
+ export class RpcXyoSigner implements XyoSigner {
14
16
  protected readonly transport: RpcTransport<typeof XyoSignerRpcSchemas>
15
17
 
16
18
  constructor(transport: RpcTransport<typeof XyoSignerRpcSchemas>) {
@@ -40,4 +42,13 @@ export class JsonRpcXyoSigner implements XyoSigner {
40
42
  from,
41
43
  ])
42
44
  }
45
+
46
+ signTransaction(tx: [UnsignedBoundWitness<TransactionBoundWitness>, Payload[]]): Promisable<[Signed<TransactionBoundWitness>, Payload[]]> {
47
+ throw new Error('Method not implemented.')
48
+ }
43
49
  }
50
+
51
+ /**
52
+ * @deprecated Use `RpcXyoSigner` instead.
53
+ */
54
+ export class JsonRpcXyoSigner extends RpcXyoSigner {}
@@ -1,6 +1,7 @@
1
1
  import type { Address } from '@xylabs/hex'
2
+ import type { Promisable } from '@xylabs/promise'
2
3
  import type { AccountInstance } from '@xyo-network/account-model'
3
- import type { Signed } from '@xyo-network/boundwitness-model'
4
+ import type { Signed, UnsignedBoundWitness } from '@xyo-network/boundwitness-model'
4
5
  import { type Payload } from '@xyo-network/payload-model'
5
6
  import type {
6
7
  AllowedBlockPayload, TransactionBoundWitness, TransactionFeesBigInt, XyoSigner,
@@ -40,4 +41,8 @@ export class MemoryXyoSigner implements XyoSigner {
40
41
  )
41
42
  return transaction[0]
42
43
  }
44
+
45
+ signTransaction(_tx: [UnsignedBoundWitness<TransactionBoundWitness>, Payload[]]): Promisable<[Signed<TransactionBoundWitness>, Payload[]]> {
46
+ throw new Error('Method not implemented.')
47
+ }
43
48
  }
@@ -10,7 +10,7 @@ import {
10
10
  import { rpcEngineFromProvider } from '../../../engine/index-node.ts'
11
11
  import { MemoryRpcTransport } from '../../../transport/index.ts'
12
12
  import { XyoConnection } from '../../provider/index.ts'
13
- import { JsonRpcXyoSigner } from '../JsonRpcXyoSigner.ts'
13
+ import { RpcXyoSigner } from '../JsonRpcXyoSigner.ts'
14
14
  import { MemoryXyoSigner } from '../MemoryXyoSigner.ts'
15
15
 
16
16
  describe('RpcEngine - XyoSigner', () => {
@@ -22,7 +22,7 @@ describe('RpcEngine - XyoSigner', () => {
22
22
  const provider = new XyoConnection({ signer })
23
23
  const engine = rpcEngineFromProvider(provider)
24
24
  const transport = new MemoryRpcTransport(engine)
25
- sut = new JsonRpcXyoSigner(transport)
25
+ sut = new RpcXyoSigner(transport)
26
26
  })
27
27
  describe('address', () => {
28
28
  it('should return signer addresses', async () => {