@toon-protocol/connector 3.15.5 → 3.17.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 (50) hide show
  1. package/dist/client/connector-admin-client.d.ts +61 -0
  2. package/dist/client/connector-admin-client.d.ts.map +1 -0
  3. package/dist/client/connector-admin-client.js +87 -0
  4. package/dist/client/connector-admin-client.js.map +1 -0
  5. package/dist/core/connector-node.d.ts +3 -0
  6. package/dist/core/connector-node.d.ts.map +1 -1
  7. package/dist/core/connector-node.js +138 -3
  8. package/dist/core/connector-node.js.map +1 -1
  9. package/dist/core/registry-db-schema.d.ts +5 -0
  10. package/dist/core/registry-db-schema.d.ts.map +1 -0
  11. package/dist/core/registry-db-schema.js +35 -0
  12. package/dist/core/registry-db-schema.js.map +1 -0
  13. package/dist/core/registry-store.d.ts +33 -0
  14. package/dist/core/registry-store.d.ts.map +1 -0
  15. package/dist/core/registry-store.js +103 -0
  16. package/dist/core/registry-store.js.map +1 -0
  17. package/dist/http/admin-api-inventory.d.ts.map +1 -1
  18. package/dist/http/admin-api-inventory.js +21 -0
  19. package/dist/http/admin-api-inventory.js.map +1 -1
  20. package/dist/http/admin-api.d.ts +14 -0
  21. package/dist/http/admin-api.d.ts.map +1 -1
  22. package/dist/http/admin-api.js +207 -4
  23. package/dist/http/admin-api.js.map +1 -1
  24. package/dist/http/admin-server.d.ts +2 -0
  25. package/dist/http/admin-server.d.ts.map +1 -1
  26. package/dist/http/admin-server.js +3 -1
  27. package/dist/http/admin-server.js.map +1 -1
  28. package/dist/lib.d.ts +2 -0
  29. package/dist/lib.d.ts.map +1 -1
  30. package/dist/lib.js +4 -1
  31. package/dist/lib.js.map +1 -1
  32. package/dist/routing/relation-route-validator.d.ts +15 -0
  33. package/dist/routing/relation-route-validator.d.ts.map +1 -0
  34. package/dist/routing/relation-route-validator.js +47 -0
  35. package/dist/routing/relation-route-validator.js.map +1 -0
  36. package/dist/routing/routing-table.d.ts +11 -0
  37. package/dist/routing/routing-table.d.ts.map +1 -1
  38. package/dist/routing/routing-table.js +6 -0
  39. package/dist/routing/routing-table.js.map +1 -1
  40. package/dist/settlement/mina-payment-channel-sdk.d.ts +18 -3
  41. package/dist/settlement/mina-payment-channel-sdk.d.ts.map +1 -1
  42. package/dist/settlement/mina-payment-channel-sdk.js +155 -10
  43. package/dist/settlement/mina-payment-channel-sdk.js.map +1 -1
  44. package/dist/settlement/provider/mina-payment-channel-provider.d.ts +3 -0
  45. package/dist/settlement/provider/mina-payment-channel-provider.d.ts.map +1 -1
  46. package/dist/settlement/provider/mina-payment-channel-provider.js +8 -1
  47. package/dist/settlement/provider/mina-payment-channel-provider.js.map +1 -1
  48. package/dist/settlement/provider/payment-channel-provider.d.ts +2 -0
  49. package/dist/settlement/provider/payment-channel-provider.d.ts.map +1 -1
  50. package/package.json +5 -1
@@ -1 +1 @@
1
- {"version":3,"file":"admin-server.js","sourceRoot":"","sources":["../../src/http/admin-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"admin-server.js","sourceRoot":"","sources":["../../src/http/admin-server.ts"],"names":[],"mappings":"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"}
package/dist/lib.d.ts CHANGED
@@ -15,6 +15,8 @@ import { UnifiedSettlementExecutor } from './settlement/unified-settlement-execu
15
15
  import { createPaymentHandlerAdapter, REJECT_CODE_MAP, generatePaymentId, mapRejectCode, validateResponseData } from './core/payment-handler';
16
16
  import { IlpSendHandler, validateIlpSendRequest } from './http/ilp-send-handler';
17
17
  export { ConnectorNode, ConfigLoader, ConfigurationError, ConnectorNotStartedError, RoutingTable, PacketHandler, BTPServer, BTPClient, BTPClientManager, AdminServer, IlpHttpAdapter, evaluatePeerSecret, AccountManager, SettlementMonitor, UnifiedSettlementExecutor, createLogger, createPaymentHandlerAdapter, REJECT_CODE_MAP, generatePaymentId, mapRejectCode, validateResponseData, IlpSendHandler, validateIlpSendRequest, };
18
+ export { ConnectorAdminClient, ConnectorAdminError } from './client/connector-admin-client';
19
+ export type { ConnectorAdminClientOptions, RegisterPeerInput, AdminRouteInput, FetchLike, } from './client/connector-admin-client';
18
20
  export type { ConnectorConfig, PeerConfig, RouteConfig, SettlementConfig, LocalDeliveryConfig, LocalDeliveryHandler, LocalDeliveryRequest, LocalDeliveryResponse, SendPacketParams, PeerRegistrationRequest, PeerInfo, PeerAccountBalance, RouteInfo, RemovePeerResult, IlpSendRequest, IlpSendResponse, TransportConfig, } from './config/types';
19
21
  export type { AdminSettlementConfig } from './settlement/types';
20
22
  export type { ChannelOpenOptions, ChannelMetadata } from './settlement/channel-manager';
package/dist/lib.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACpG,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAI5D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EACL,2BAA2B,EAC3B,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAGjF,OAAO,EACL,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,wBAAwB,EACxB,YAAY,EACZ,aAAa,EACb,SAAS,EACT,SAAS,EACT,gBAAgB,EAGhB,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,yBAAyB,EACzB,YAAY,EAEZ,2BAA2B,EAC3B,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EAEpB,cAAc,EACd,sBAAsB,GACvB,CAAC;AAGF,YAAY,EACV,eAAe,EACf,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,uBAAuB,EACvB,QAAQ,EACR,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAGhE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAGxF,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG9F,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGzE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGjG,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACnE,YAAY,EACV,sBAAsB,EACtB,eAAe,EACf,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACpG,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAI5D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EACL,2BAA2B,EAC3B,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAGjF,OAAO,EACL,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,wBAAwB,EACxB,YAAY,EACZ,aAAa,EACb,SAAS,EACT,SAAS,EACT,gBAAgB,EAGhB,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,yBAAyB,EACzB,YAAY,EAEZ,2BAA2B,EAC3B,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EAEpB,cAAc,EACd,sBAAsB,GACvB,CAAC;AAGF,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC5F,YAAY,EACV,2BAA2B,EAC3B,iBAAiB,EACjB,eAAe,EACf,SAAS,GACV,MAAM,iCAAiC,CAAC;AAGzC,YAAY,EACV,eAAe,EACf,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,uBAAuB,EACvB,QAAQ,EACR,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAGhE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAGxF,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG9F,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGzE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGjG,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACnE,YAAY,EACV,sBAAsB,EACtB,eAAe,EACf,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC"}
package/dist/lib.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateIlpSendRequest = exports.IlpSendHandler = exports.validateResponseData = exports.mapRejectCode = exports.generatePaymentId = exports.REJECT_CODE_MAP = exports.createPaymentHandlerAdapter = exports.createLogger = exports.UnifiedSettlementExecutor = exports.SettlementMonitor = exports.AccountManager = exports.evaluatePeerSecret = exports.IlpHttpAdapter = exports.AdminServer = exports.BTPClientManager = exports.BTPClient = exports.BTPServer = exports.PacketHandler = exports.RoutingTable = exports.ConnectorNotStartedError = exports.ConfigurationError = exports.ConfigLoader = exports.ConnectorNode = void 0;
3
+ exports.ConnectorAdminError = exports.ConnectorAdminClient = exports.validateIlpSendRequest = exports.IlpSendHandler = exports.validateResponseData = exports.mapRejectCode = exports.generatePaymentId = exports.REJECT_CODE_MAP = exports.createPaymentHandlerAdapter = exports.createLogger = exports.UnifiedSettlementExecutor = exports.SettlementMonitor = exports.AccountManager = exports.evaluatePeerSecret = exports.IlpHttpAdapter = exports.AdminServer = exports.BTPClientManager = exports.BTPClient = exports.BTPServer = exports.PacketHandler = exports.RoutingTable = exports.ConnectorNotStartedError = exports.ConfigurationError = exports.ConfigLoader = exports.ConnectorNode = void 0;
4
4
  const connector_node_1 = require("./core/connector-node");
5
5
  Object.defineProperty(exports, "ConnectorNode", { enumerable: true, get: function () { return connector_node_1.ConnectorNode; } });
6
6
  const config_loader_1 = require("./config/config-loader");
@@ -40,4 +40,7 @@ Object.defineProperty(exports, "validateResponseData", { enumerable: true, get:
40
40
  const ilp_send_handler_1 = require("./http/ilp-send-handler");
41
41
  Object.defineProperty(exports, "IlpSendHandler", { enumerable: true, get: function () { return ilp_send_handler_1.IlpSendHandler; } });
42
42
  Object.defineProperty(exports, "validateIlpSendRequest", { enumerable: true, get: function () { return ilp_send_handler_1.validateIlpSendRequest; } });
43
+ var connector_admin_client_1 = require("./client/connector-admin-client");
44
+ Object.defineProperty(exports, "ConnectorAdminClient", { enumerable: true, get: function () { return connector_admin_client_1.ConnectorAdminClient; } });
45
+ Object.defineProperty(exports, "ConnectorAdminError", { enumerable: true, get: function () { return connector_admin_client_1.ConnectorAdminError; } });
43
46
  //# sourceMappingURL=lib.js.map
package/dist/lib.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":";;;AAMA,0DAAsD;AA4BpD,8FA5BO,8BAAa,OA4BP;AA3Bf,0DAAoG;AA4BlG,6FA5BO,4BAAY,OA4BP;AACZ,mGA7BqB,kCAAkB,OA6BrB;AAClB,yGA9ByC,wCAAwB,OA8BzC;AA7B1B,2CAA8C;AA2C5C,6FA3CO,qBAAY,OA2CP;AA1Cd,2DAAuD;AA6BrD,6FA7BO,4BAAY,OA6BP;AA5Bd,0DAAsD;AA6BpD,8FA7BO,8BAAa,OA6BP;AA5Bf,iDAA6C;AA6B3C,0FA7BO,sBAAS,OA6BP;AA5BX,iDAA6C;AA6B3C,0FA7BO,sBAAS,OA6BP;AA5BX,iEAA4D;AA6B1D,iGA7BO,qCAAgB,OA6BP;AAzBlB,sDAAkD;AA4BhD,4FA5BO,0BAAW,OA4BP;AA3Bb,8DAAyD;AA4BvD,+FA5BO,iCAAc,OA4BP;AA3BhB,sEAAiE;AA4B/D,mGA5BO,yCAAkB,OA4BP;AA3BpB,kEAA8D;AA4B5D,+FA5BO,gCAAc,OA4BP;AA3BhB,wEAAoE;AA4BlE,kGA5BO,sCAAiB,OA4BP;AA3BnB,0FAAqF;AA4BnF,0GA5BO,uDAAyB,OA4BP;AA3B3B,4DAMgC;AAwB9B,4GA7BA,6CAA2B,OA6BA;AAC3B,gGA7BA,iCAAe,OA6BA;AACf,kGA7BA,mCAAiB,OA6BA;AACjB,8FA7BA,+BAAa,OA6BA;AACb,qGA7BA,sCAAoB,OA6BA;AA3BtB,8DAAiF;AA6B/E,+FA7BO,iCAAc,OA6BP;AACd,uGA9BuB,yCAAsB,OA8BvB"}
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":";;;AAMA,0DAAsD;AA4BpD,8FA5BO,8BAAa,OA4BP;AA3Bf,0DAAoG;AA4BlG,6FA5BO,4BAAY,OA4BP;AACZ,mGA7BqB,kCAAkB,OA6BrB;AAClB,yGA9ByC,wCAAwB,OA8BzC;AA7B1B,2CAA8C;AA2C5C,6FA3CO,qBAAY,OA2CP;AA1Cd,2DAAuD;AA6BrD,6FA7BO,4BAAY,OA6BP;AA5Bd,0DAAsD;AA6BpD,8FA7BO,8BAAa,OA6BP;AA5Bf,iDAA6C;AA6B3C,0FA7BO,sBAAS,OA6BP;AA5BX,iDAA6C;AA6B3C,0FA7BO,sBAAS,OA6BP;AA5BX,iEAA4D;AA6B1D,iGA7BO,qCAAgB,OA6BP;AAzBlB,sDAAkD;AA4BhD,4FA5BO,0BAAW,OA4BP;AA3Bb,8DAAyD;AA4BvD,+FA5BO,iCAAc,OA4BP;AA3BhB,sEAAiE;AA4B/D,mGA5BO,yCAAkB,OA4BP;AA3BpB,kEAA8D;AA4B5D,+FA5BO,gCAAc,OA4BP;AA3BhB,wEAAoE;AA4BlE,kGA5BO,sCAAiB,OA4BP;AA3BnB,0FAAqF;AA4BnF,0GA5BO,uDAAyB,OA4BP;AA3B3B,4DAMgC;AAwB9B,4GA7BA,6CAA2B,OA6BA;AAC3B,gGA7BA,iCAAe,OA6BA;AACf,kGA7BA,mCAAiB,OA6BA;AACjB,8FA7BA,+BAAa,OA6BA;AACb,qGA7BA,sCAAoB,OA6BA;AA3BtB,8DAAiF;AA6B/E,+FA7BO,iCAAc,OA6BP;AACd,uGA9BuB,yCAAsB,OA8BvB;AAIxB,0EAA4F;AAAnF,8HAAA,oBAAoB,OAAA;AAAE,6HAAA,mBAAmB,OAAA"}
@@ -0,0 +1,15 @@
1
+ import type { PeerRelation } from '@toon-protocol/shared';
2
+ import type { RoutingTableEntry } from '@toon-protocol/shared';
3
+ export type RelationRouteValidation = {
4
+ ok: true;
5
+ } | {
6
+ ok: false;
7
+ error: string;
8
+ };
9
+ export declare function deriveLocalPrefixes(routes: Array<Pick<RoutingTableEntry, 'prefix' | 'nextHop'>>, nodeId: string): string[];
10
+ export declare function validateRelationRoute(relation: PeerRelation | undefined, localPrefixes: string[], routePrefixes: string[]): RelationRouteValidation;
11
+ export declare function deriveDefaultChildRoute(relation: PeerRelation | undefined, localPrefixes: string[], peerId: string): {
12
+ prefix: string;
13
+ priority: number;
14
+ } | null;
15
+ //# sourceMappingURL=relation-route-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation-route-validator.d.ts","sourceRoot":"","sources":["../../src/routing/relation-route-validator.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG/D,MAAM,MAAM,uBAAuB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAMlF,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC,EAC5D,MAAM,EAAE,MAAM,GACb,MAAM,EAAE,CAEV;AAqBD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,YAAY,GAAG,SAAS,EAClC,aAAa,EAAE,MAAM,EAAE,EACvB,aAAa,EAAE,MAAM,EAAE,GACtB,uBAAuB,CA+BzB;AAQD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,YAAY,GAAG,SAAS,EAClC,aAAa,EAAE,MAAM,EAAE,EACvB,MAAM,EAAE,MAAM,GACb;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAK7C"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deriveLocalPrefixes = deriveLocalPrefixes;
4
+ exports.validateRelationRoute = validateRelationRoute;
5
+ exports.deriveDefaultChildRoute = deriveDefaultChildRoute;
6
+ function deriveLocalPrefixes(routes, nodeId) {
7
+ return routes.filter((r) => r.nextHop === nodeId || r.nextHop === 'local').map((r) => r.prefix);
8
+ }
9
+ function isStrictDescendant(candidate, ancestor) {
10
+ return candidate.startsWith(ancestor + '.');
11
+ }
12
+ function validateRelationRoute(relation, localPrefixes, routePrefixes) {
13
+ const effectiveRelation = relation ?? 'peer';
14
+ if (localPrefixes.length === 0 || routePrefixes.length === 0) {
15
+ return { ok: true };
16
+ }
17
+ if (effectiveRelation === 'child') {
18
+ for (const prefix of routePrefixes) {
19
+ const underSelf = localPrefixes.some((self) => isStrictDescendant(prefix, self));
20
+ if (!underSelf) {
21
+ return {
22
+ ok: false,
23
+ error: `Invalid route for child peer: prefix '${prefix}' must be under the connector's own address (one of: ${localPrefixes.join(', ')})`,
24
+ };
25
+ }
26
+ }
27
+ }
28
+ if (effectiveRelation === 'parent') {
29
+ for (const prefix of routePrefixes) {
30
+ const underSelf = localPrefixes.some((self) => isStrictDescendant(prefix, self));
31
+ if (underSelf) {
32
+ return {
33
+ ok: false,
34
+ error: `Invalid route for parent peer: prefix '${prefix}' must not be under the connector's own address subtree (one of: ${localPrefixes.join(', ')})`,
35
+ };
36
+ }
37
+ }
38
+ }
39
+ return { ok: true };
40
+ }
41
+ function deriveDefaultChildRoute(relation, localPrefixes, peerId) {
42
+ if (relation !== 'child' || localPrefixes.length === 0) {
43
+ return null;
44
+ }
45
+ return { prefix: `${localPrefixes[0]}.${peerId}`, priority: 0 };
46
+ }
47
+ //# sourceMappingURL=relation-route-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation-route-validator.js","sourceRoot":"","sources":["../../src/routing/relation-route-validator.ts"],"names":[],"mappings":";;AA6BA,kDAKC;AAqBD,sDAmCC;AAQD,0DASC;AA9ED,SAAgB,mBAAmB,CACjC,MAA4D,EAC5D,MAAc;IAEd,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAClG,CAAC;AAGD,SAAS,kBAAkB,CAAC,SAAiB,EAAE,QAAgB;IAC7D,OAAO,SAAS,CAAC,UAAU,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;AAC9C,CAAC;AAgBD,SAAgB,qBAAqB,CACnC,QAAkC,EAClC,aAAuB,EACvB,aAAuB;IAEvB,MAAM,iBAAiB,GAAG,QAAQ,IAAI,MAAM,CAAC;IAC7C,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,IAAI,iBAAiB,KAAK,OAAO,EAAE,CAAC;QAClC,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACnC,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YACjF,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,yCAAyC,MAAM,wDAAwD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;iBAC1I,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,iBAAiB,KAAK,QAAQ,EAAE,CAAC;QACnC,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACnC,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YACjF,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,0CAA0C,MAAM,oEAAoE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;iBACvJ,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC;AAQD,SAAgB,uBAAuB,CACrC,QAAkC,EAClC,aAAuB,EACvB,MAAc;IAEd,IAAI,QAAQ,KAAK,OAAO,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AAClE,CAAC"}
@@ -1,12 +1,23 @@
1
1
  import { ILPAddress, RoutingTableEntry } from '@toon-protocol/shared';
2
+ export interface RoutePersistenceSink {
3
+ saveRoute(record: {
4
+ prefix: string;
5
+ nextHop: string;
6
+ priority: number;
7
+ source: 'runtime';
8
+ }): void;
9
+ deleteRoute(prefix: string): void;
10
+ }
2
11
  export declare class RoutingTable {
3
12
  private readonly routes;
4
13
  private readonly logger?;
14
+ private persistence?;
5
15
  constructor(initialRoutes?: RoutingTableEntry[], logger?: {
6
16
  info: (obj: object, msg?: string) => void;
7
17
  error: (obj: object, msg?: string) => void;
8
18
  });
9
19
  addRoute(prefix: ILPAddress, nextHop: string, priority?: number): void;
20
+ setPersistence(sink: RoutePersistenceSink): void;
10
21
  removeRoute(prefix: string): void;
11
22
  getNextHop(destination: ILPAddress): string | null;
12
23
  getAllRoutes(): RoutingTableEntry[];
@@ -1 +1 @@
1
- {"version":3,"file":"routing-table.d.ts","sourceRoot":"","sources":["../../src/routing/routing-table.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAqB,MAAM,uBAAuB,CAAC;AAqBzF,qBAAa,YAAY;IAMvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IAQxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAGtB;gBASA,aAAa,CAAC,EAAE,iBAAiB,EAAE,EACnC,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;QAC1C,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;KAC5C;IA0BH,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,IAAI;IAoBzE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA+BjC,UAAU,CAAC,WAAW,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI;IA+BlD,YAAY,IAAI,iBAAiB,EAAE;IAYnC,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
1
+ {"version":3,"file":"routing-table.d.ts","sourceRoot":"","sources":["../../src/routing/routing-table.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAqB,MAAM,uBAAuB,CAAC;AAOzF,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,CAAA;KAAE,GAAG,IAAI,CAAC;IAClG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAqBD,qBAAa,YAAY;IAMvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IAQxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAGtB;IAUF,OAAO,CAAC,WAAW,CAAC,CAAuB;gBASzC,aAAa,CAAC,EAAE,iBAAiB,EAAE,EACnC,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;QAC1C,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;KAC5C;IA0BH,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,IAAI;IAkBzE,cAAc,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI;IAWhD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAgCjC,UAAU,CAAC,WAAW,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI;IA+BlD,YAAY,IAAI,iBAAiB,EAAE;IAYnC,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
@@ -5,6 +5,7 @@ const shared_1 = require("@toon-protocol/shared");
5
5
  class RoutingTable {
6
6
  routes;
7
7
  logger;
8
+ persistence;
8
9
  constructor(initialRoutes, logger) {
9
10
  this.routes = new Map();
10
11
  this.logger = logger;
@@ -23,11 +24,16 @@ class RoutingTable {
23
24
  }
24
25
  const entry = { prefix, nextHop, priority };
25
26
  this.routes.set(prefix, entry);
27
+ this.persistence?.saveRoute({ prefix, nextHop, priority: priority ?? 0, source: 'runtime' });
26
28
  this.logger?.info({ prefix, nextHop, priority }, `Added route: ${prefix} -> ${nextHop}`);
27
29
  }
30
+ setPersistence(sink) {
31
+ this.persistence = sink;
32
+ }
28
33
  removeRoute(prefix) {
29
34
  const existed = this.routes.has(prefix);
30
35
  this.routes.delete(prefix);
36
+ this.persistence?.deleteRoute(prefix);
31
37
  if (existed) {
32
38
  this.logger?.info({ prefix }, `Removed route: ${prefix}`);
33
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"routing-table.js","sourceRoot":"","sources":["../../src/routing/routing-table.ts"],"names":[],"mappings":";;;AAMA,kDAAyF;AAqBzF,MAAa,YAAY;IAMN,MAAM,CAAiC;IAQvC,MAAM,CAGrB;IAQF,YACE,aAAmC,EACnC,MAGC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC7D,CAAC;YACD,IAAI,CAAC,MAAM,EAAE,IAAI,CACf,EAAE,UAAU,EAAE,aAAa,CAAC,MAAM,EAAE,EACpC,kCAAkC,aAAa,CAAC,MAAM,SAAS,CAChE,CAAC;QACJ,CAAC;IACH,CAAC;IAYD,QAAQ,CAAC,MAAkB,EAAE,OAAe,EAAE,WAAmB,CAAC;QAChE,IAAI,CAAC,IAAA,0BAAiB,EAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACjE,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAsB,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE/B,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,gBAAgB,MAAM,OAAO,OAAO,EAAE,CAAC,CAAC;IAC3F,CAAC;IASD,WAAW,CAAC,MAAc;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE3B,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,kBAAkB,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAwBD,UAAU,CAAC,WAAuB;QAChC,IAAI,SAAS,GAA6B,IAAI,CAAC;QAC/C,IAAI,mBAAmB,GAAG,CAAC,CAAC,CAAC;QAE7B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YAEzC,IAAI,WAAW,KAAK,KAAK,CAAC,MAAM,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;gBAC/E,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;gBAGzC,IACE,YAAY,GAAG,mBAAmB;oBAClC,CAAC,YAAY,KAAK,mBAAmB;wBACnC,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,IAAI,CAAC,CAAC,CAAC,EACrD,CAAC;oBACD,SAAS,GAAG,KAAK,CAAC;oBAClB,mBAAmB,GAAG,YAAY,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,SAAS,EAAE,OAAO,IAAI,IAAI,CAAC;IACpC,CAAC;IASD,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACtD,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC,CAAC,CAAC;IACN,CAAC;IAMD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;CACF;AAzJD,oCAyJC"}
1
+ {"version":3,"file":"routing-table.js","sourceRoot":"","sources":["../../src/routing/routing-table.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,7 @@ export interface MinaTxResult {
37
37
  export interface MinaSubscription {
38
38
  unsubscribe(): void;
39
39
  }
40
+ export declare const EXPECTED_USDC_DECIMALS = 6;
40
41
  export declare const DEFAULT_MINA_TX_FEE_NANOMINA = 100000000n;
41
42
  export declare function _resetModuleCaches(): void;
42
43
  export declare class MinaPaymentChannelSDK {
@@ -50,27 +51,41 @@ export declare class MinaPaymentChannelSDK {
50
51
  private _networkInitialized;
51
52
  private readonly _participantCache;
52
53
  private readonly _channelHashCache;
54
+ private readonly _channelKeyCache;
55
+ private _tokenContext;
53
56
  private readonly _txFee;
54
- constructor(graphqlUrl: string, _zkAppAddress: string, _logger: Logger, _signerPrivateKey?: string | undefined, txFeeNanomina?: bigint);
57
+ private readonly _tokenAddress?;
58
+ private readonly _configuredTokenId?;
59
+ constructor(graphqlUrl: string, _zkAppAddress: string, _logger: Logger, _signerPrivateKey?: string | undefined, txFeeNanomina?: bigint, tokenConfig?: {
60
+ tokenAddress?: string;
61
+ tokenId?: string;
62
+ });
63
+ get isUsdcToken(): boolean;
55
64
  private _feePayer;
56
65
  private _requireSignerKey;
57
66
  private _setNetwork;
58
67
  private _getZkApp;
59
68
  private _waitForAccount;
60
69
  private _resolveChannelHash;
70
+ private _getTokenContext;
71
+ private _assertTokenDecimals;
72
+ assertClaimTokenId(claimTokenId: string): Promise<void>;
61
73
  private _wrapError;
62
74
  private _deserializeSignature;
63
75
  private _normalizeSerializedProof;
64
76
  getSignerPublicKey(): Promise<string>;
65
77
  compileContract(): Promise<void>;
66
78
  openChannel(participantA: string, participantB: string, timeout: number, tokenId?: string): Promise<MinaOpenChannelResult>;
67
- deposit(channelAddress: string, amount: bigint): Promise<MinaTxResult>;
79
+ deposit(channelAddress: string, amount: bigint, fundChannelTokenAccount?: boolean): Promise<MinaTxResult>;
68
80
  claimFromChannel(channelAddress: string, newBalanceA: bigint, newBalanceB: bigint, salt: bigint, nonce: bigint, signatureA: string, signatureB: string, participantKeys?: {
69
81
  participant1: string;
70
82
  participant2: string;
71
83
  }): Promise<MinaTxResult>;
72
84
  closeChannel(channelAddress: string, finalBalanceA: bigint, finalBalanceB: bigint, salt: bigint, nonce: bigint, signatureA: string, signatureB: string): Promise<MinaTxResult>;
73
- settleChannel(channelAddress: string, balanceA: bigint, balanceB: bigint, salt: bigint, participantA: string, participantB: string, nonce: bigint): Promise<MinaTxResult>;
85
+ settleChannel(channelAddress: string, balanceA: bigint, balanceB: bigint, salt: bigint, participantA: string, participantB: string, nonce: bigint, options?: {
86
+ fundParticipantTokenAccounts?: number;
87
+ channelPrivateKey?: string;
88
+ }): Promise<MinaTxResult>;
74
89
  getChannelState(channelAddress: string): Promise<MinaChannelState>;
75
90
  getChannelEvents(channelAddress: string): Promise<Array<{
76
91
  type: string;
@@ -1 +1 @@
1
- {"version":3,"file":"mina-payment-channel-sdk.d.ts","sourceRoot":"","sources":["../../src/settlement/mina-payment-channel-sdk.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAW9C,MAAM,WAAW,gBAAgB;IAE/B,YAAY,EAAE,MAAM,CAAC;IAErB,YAAY,EAAE,MAAM,CAAC;IAErB,YAAY,EAAE,MAAM,CAAC;IAErB,YAAY,EAAE,MAAM,CAAC;IAErB,iBAAiB,EAAE,MAAM,CAAC;IAE1B,UAAU,EAAE,MAAM,CAAC;IAEnB,YAAY,EAAE,MAAM,CAAC;IAErB,iBAAiB,EAAE,MAAM,CAAC;IAE1B,OAAO,EAAE,MAAM,CAAC;IAEhB,WAAW,EAAE,MAAM,CAAC;CACrB;AAOD,eAAO,MAAM,gBAAgB;;;;;;;;;;CAUnB,CAAC;AAKX,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAO7D;AAOD,MAAM,WAAW,qBAAqB;IAEpC,YAAY,EAAE,MAAM,CAAC;IAErB,MAAM,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,WAAW,YAAY;IAE3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,WAAW,gBAAgB;IAE/B,WAAW,IAAI,IAAI,CAAC;CACrB;AAiED,eAAO,MAAM,4BAA4B,aAAe,CAAC;AAwBzD,wBAAgB,kBAAkB,IAAI,IAAI,CAGzC;AAkBD,qBAAa,qBAAqB;IAkD9B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAlDrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAG5B,OAAO,CAAC,SAAS,CAAS;IAI1B,OAAO,CAAC,gBAAgB,CAAa;IAOrC,IAAI,eAAe,IAAI,GAAG,CAEzB;IAGD,OAAO,CAAC,mBAAmB,CAAS;IAGpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAG9B;IAUJ,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA6B;IAS/D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAG9B,UAAU,EAAE,MAAM,EACD,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,iBAAiB,CAAC,EAAE,MAAM,YAAA,EAC3C,aAAa,GAAE,MAAqC;IAetD,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,iBAAiB;YAgBX,WAAW;YAcX,SAAS;YAqCT,eAAe;YAqCf,mBAAmB;IAcjC,OAAO,CAAC,UAAU;IAgClB,OAAO,CAAC,qBAAqB;IA2D7B,OAAO,CAAC,yBAAyB;IA2B3B,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAkBrC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IA2ChC,WAAW,CACf,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,qBAAqB,CAAC;IAwF3B,OAAO,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAmDtE,gBAAgB,CACpB,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAC/D,OAAO,CAAC,YAAY,CAAC;IA8IlB,YAAY,CAChB,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,CAAC;IAqDlB,aAAa,CACjB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,YAAY,CAAC;IAyDlB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiElE,gBAAgB,CACpB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IAqC5D,gBAAgB,CACpB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC;IA4FZ,kBAAkB,CACtB,cAAc,EAAE,MAAM,EACtB,iBAAiB,EAAE,MAAM,EACzB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,CAAC;IAyKnB,kBAAkB,CAChB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,EAC3C,cAAc,GAAE,MAAiC,GAChD,gBAAgB;CAsDpB"}
1
+ {"version":3,"file":"mina-payment-channel-sdk.d.ts","sourceRoot":"","sources":["../../src/settlement/mina-payment-channel-sdk.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.MinaPaymentChannelSDK = exports.DEFAULT_MINA_TX_FEE_NANOMINA = exports.MinaChannelError = exports.MINA_ERROR_CODES = void 0;
36
+ exports.MinaPaymentChannelSDK = exports.DEFAULT_MINA_TX_FEE_NANOMINA = exports.EXPECTED_USDC_DECIMALS = exports.MinaChannelError = exports.MINA_ERROR_CODES = void 0;
37
37
  exports._resetModuleCaches = _resetModuleCaches;
38
38
  exports.MINA_ERROR_CODES = {
39
39
  COMPILE_FAILED: 1001,
@@ -84,6 +84,20 @@ async function getPaymentChannelContract() {
84
84
  }
85
85
  return PaymentChannelContract;
86
86
  }
87
+ let FungibleTokenContract = null;
88
+ async function getFungibleTokenContract() {
89
+ if (!FungibleTokenContract) {
90
+ try {
91
+ const mod = await Promise.resolve().then(() => __importStar(require('mina-fungible-token')));
92
+ FungibleTokenContract = mod.FungibleToken;
93
+ }
94
+ catch {
95
+ throw new MinaChannelError('mina-fungible-token is required for USDC-token Mina payment channels but is not installed.', exports.MINA_ERROR_CODES.O1JS_NOT_AVAILABLE, 'O1JS_NOT_AVAILABLE');
96
+ }
97
+ }
98
+ return FungibleTokenContract;
99
+ }
100
+ exports.EXPECTED_USDC_DECIMALS = 6;
87
101
  const DEFAULT_POLL_INTERVAL_MS = 30_000;
88
102
  exports.DEFAULT_MINA_TX_FEE_NANOMINA = 100000000n;
89
103
  const DEFAULT_DEPLOY_CONFIRMATION_TIMEOUT_MS = 300_000;
@@ -91,6 +105,7 @@ const DEPLOY_CONFIRMATION_POLL_INTERVAL_MS = 3_000;
91
105
  function _resetModuleCaches() {
92
106
  o1jsModule = null;
93
107
  PaymentChannelContract = null;
108
+ FungibleTokenContract = null;
94
109
  }
95
110
  class MinaPaymentChannelSDK {
96
111
  _zkAppAddress;
@@ -105,13 +120,22 @@ class MinaPaymentChannelSDK {
105
120
  _networkInitialized = false;
106
121
  _participantCache = new Map();
107
122
  _channelHashCache = new Map();
123
+ _channelKeyCache = new Map();
124
+ _tokenContext = null;
108
125
  _txFee;
109
- constructor(graphqlUrl, _zkAppAddress, _logger, _signerPrivateKey, txFeeNanomina = exports.DEFAULT_MINA_TX_FEE_NANOMINA) {
126
+ _tokenAddress;
127
+ _configuredTokenId;
128
+ constructor(graphqlUrl, _zkAppAddress, _logger, _signerPrivateKey, txFeeNanomina = exports.DEFAULT_MINA_TX_FEE_NANOMINA, tokenConfig) {
110
129
  this._zkAppAddress = _zkAppAddress;
111
130
  this._logger = _logger;
112
131
  this._signerPrivateKey = _signerPrivateKey;
113
132
  this.graphqlUrl = graphqlUrl;
114
133
  this._txFee = txFeeNanomina;
134
+ this._tokenAddress = tokenConfig?.tokenAddress;
135
+ this._configuredTokenId = tokenConfig?.tokenId;
136
+ }
137
+ get isUsdcToken() {
138
+ return this._tokenAddress !== undefined && this._tokenAddress !== '';
115
139
  }
116
140
  _feePayer(sender) {
117
141
  return { sender, fee: this._txFee.toString() };
@@ -168,6 +192,69 @@ class MinaPaymentChannelSDK {
168
192
  this._channelHashCache.set(channelAddress, channelHash);
169
193
  return channelHash;
170
194
  }
195
+ async _getTokenContext() {
196
+ if (!this.isUsdcToken || !this._tokenAddress) {
197
+ throw new MinaChannelError('USDC token operations require a configured token-owner address ' +
198
+ '(MinaProviderConfig.tokenAddress), but none was provided.', exports.MINA_ERROR_CODES.INVALID_PARAMETERS, 'INVALID_PARAMETERS');
199
+ }
200
+ if (this._tokenContext) {
201
+ return this._tokenContext;
202
+ }
203
+ const { PublicKey } = await getO1js();
204
+ const FungibleToken = await getFungibleTokenContract();
205
+ await this._setNetwork();
206
+ const tokenOwnerKey = PublicKey.fromBase58(this._tokenAddress);
207
+ const token = new FungibleToken(tokenOwnerKey);
208
+ const tokenId = token.deriveTokenId().toString();
209
+ if (this._configuredTokenId !== undefined && this._configuredTokenId !== tokenId) {
210
+ throw new MinaChannelError(`Configured Mina tokenId (${this._configuredTokenId}) does not match the tokenId derived ` +
211
+ `from the configured token-owner address ${this._tokenAddress} (${tokenId}). ` +
212
+ 'Check MinaProviderConfig.tokenAddress / tokenId (#192).', exports.MINA_ERROR_CODES.INVALID_PARAMETERS, 'INVALID_PARAMETERS');
213
+ }
214
+ this._tokenContext = { token, tokenId };
215
+ return this._tokenContext;
216
+ }
217
+ async _assertTokenDecimals() {
218
+ const { token } = await this._getTokenContext();
219
+ const { fetchAccount, PublicKey } = await getO1js();
220
+ try {
221
+ await fetchAccount({ publicKey: PublicKey.fromBase58(this._tokenAddress) });
222
+ let decimals;
223
+ if (typeof token.getDecimals === 'function') {
224
+ decimals = Number(token.getDecimals().toString());
225
+ }
226
+ else if (token.decimals && typeof token.decimals.get === 'function') {
227
+ decimals = Number(token.decimals.get().toString());
228
+ }
229
+ if (decimals === undefined) {
230
+ this._logger.warn({ event: 'token_decimals_unreadable', tokenAddress: this._tokenAddress }, 'Could not read USDC token decimals; skipping the decimals==6 assertion');
231
+ return;
232
+ }
233
+ if (decimals !== exports.EXPECTED_USDC_DECIMALS) {
234
+ throw new MinaChannelError(`Configured Mina USDC token reports ${decimals} decimals, but ${exports.EXPECTED_USDC_DECIMALS} ` +
235
+ 'are required for cross-chain base-unit parity (#192). Refusing to settle.', exports.MINA_ERROR_CODES.INVALID_PARAMETERS, 'INVALID_PARAMETERS');
236
+ }
237
+ }
238
+ catch (err) {
239
+ if (err instanceof MinaChannelError)
240
+ throw err;
241
+ this._logger.warn({
242
+ event: 'token_decimals_check_failed',
243
+ tokenAddress: this._tokenAddress,
244
+ error: err instanceof Error ? err.message : String(err),
245
+ }, 'USDC token decimals check failed to read; proceeding (tokenId match still enforced)');
246
+ }
247
+ }
248
+ async assertClaimTokenId(claimTokenId) {
249
+ if (!this.isUsdcToken) {
250
+ return;
251
+ }
252
+ const { tokenId } = await this._getTokenContext();
253
+ if (claimTokenId !== tokenId) {
254
+ throw new MinaChannelError(`Inbound Mina claim tokenId (${claimTokenId}) does not match this channel's configured ` +
255
+ `USDC tokenId (${tokenId}). The claim is for a different token (#192).`, exports.MINA_ERROR_CODES.INVALID_PARAMETERS, 'INVALID_PARAMETERS');
256
+ }
257
+ }
171
258
  _wrapError(err, code, errorName) {
172
259
  if (err instanceof MinaChannelError) {
173
260
  return err;
@@ -262,7 +349,16 @@ class MinaPaymentChannelSDK {
262
349
  const pubB = PublicKey.fromBase58(participantB);
263
350
  const nonce = Field(0);
264
351
  const timeoutField = Field(timeout);
265
- const tokenIdField = Field(tokenId ?? '1');
352
+ let resolvedTokenId;
353
+ if (this.isUsdcToken) {
354
+ const ctx = await this._getTokenContext();
355
+ resolvedTokenId = ctx.tokenId;
356
+ await this._assertTokenDecimals();
357
+ }
358
+ else {
359
+ resolvedTokenId = tokenId ?? '1';
360
+ }
361
+ const tokenIdField = Field(resolvedTokenId);
266
362
  const deployTxn = await Mina.transaction(this._feePayer(signerPublicKey), async () => {
267
363
  AccountUpdate.fundNewAccount(signerPublicKey);
268
364
  await zkApp.deploy();
@@ -280,6 +376,7 @@ class MinaPaymentChannelSDK {
280
376
  const initTx = await initTxn.sign([signerPrivateKey]).send();
281
377
  const txHash = initTx.hash ?? '';
282
378
  this._participantCache.set(zkAppAddress, { participantA, participantB });
379
+ this._channelKeyCache.set(zkAppAddress, zkAppPrivateKey.toBase58());
283
380
  this._logger.info({ event: 'open_channel', zkAppAddress, deployTxHash, txHash }, 'Mina payment channel opened');
284
381
  return { zkAppAddress, txHash };
285
382
  }
@@ -287,23 +384,41 @@ class MinaPaymentChannelSDK {
287
384
  throw this._wrapError(err, exports.MINA_ERROR_CODES.TRANSACTION_FAILED, 'TRANSACTION_FAILED');
288
385
  }
289
386
  }
290
- async deposit(channelAddress, amount) {
387
+ async deposit(channelAddress, amount, fundChannelTokenAccount = true) {
291
388
  const signerKeyBase58 = this._requireSignerKey();
292
389
  try {
293
- const { PrivateKey, Field, fetchAccount } = await getO1js();
390
+ const { PrivateKey, PublicKey, Field, UInt64, AccountUpdate, fetchAccount } = await getO1js();
294
391
  const Mina = await this._setNetwork();
295
392
  const signerPrivateKey = PrivateKey.fromBase58(signerKeyBase58);
296
393
  const signerPublicKey = signerPrivateKey.toPublicKey();
297
394
  await fetchAccount({ publicKey: signerPublicKey });
298
395
  const zkApp = await this._getZkApp(channelAddress);
299
396
  const amountField = Field(amount);
397
+ let token = null;
398
+ if (this.isUsdcToken) {
399
+ await this._assertTokenDecimals();
400
+ ({ token } = await this._getTokenContext());
401
+ }
402
+ const channelPublicKey = PublicKey.fromBase58(channelAddress);
300
403
  const txn = await Mina.transaction(this._feePayer(signerPublicKey), async () => {
404
+ if (token) {
405
+ if (fundChannelTokenAccount) {
406
+ AccountUpdate.fundNewAccount(signerPublicKey, 1);
407
+ }
408
+ await token.transfer(signerPublicKey, channelPublicKey, UInt64.Unsafe.fromField(amountField));
409
+ }
301
410
  await zkApp.deposit(amountField, signerPublicKey);
302
411
  });
303
412
  await txn.prove();
304
413
  const sentTx = await txn.sign([signerPrivateKey]).send();
305
414
  const txHash = sentTx.hash ?? '';
306
- this._logger.info({ event: 'deposit', channelAddress, amount: amount.toString(), txHash }, 'Deposited into Mina payment channel');
415
+ this._logger.info({
416
+ event: 'deposit',
417
+ channelAddress,
418
+ amount: amount.toString(),
419
+ usdc: this.isUsdcToken,
420
+ txHash,
421
+ }, 'Deposited into Mina payment channel');
307
422
  return { txHash };
308
423
  }
309
424
  catch (err) {
@@ -408,10 +523,10 @@ class MinaPaymentChannelSDK {
408
523
  throw this._wrapError(err, exports.MINA_ERROR_CODES.TRANSACTION_FAILED, 'TRANSACTION_FAILED');
409
524
  }
410
525
  }
411
- async settleChannel(channelAddress, balanceA, balanceB, salt, participantA, participantB, nonce) {
526
+ async settleChannel(channelAddress, balanceA, balanceB, salt, participantA, participantB, nonce, options) {
412
527
  const signerKeyBase58 = this._requireSignerKey();
413
528
  try {
414
- const { PrivateKey, PublicKey, Field, fetchAccount } = await getO1js();
529
+ const { PrivateKey, PublicKey, Field, UInt64, AccountUpdate, fetchAccount } = await getO1js();
415
530
  const Mina = await this._setNetwork();
416
531
  const signerPrivateKey = PrivateKey.fromBase58(signerKeyBase58);
417
532
  const signerPublicKey = signerPrivateKey.toPublicKey();
@@ -422,14 +537,44 @@ class MinaPaymentChannelSDK {
422
537
  const saltField = Field(salt);
423
538
  const pubA = PublicKey.fromBase58(participantA);
424
539
  const pubB = PublicKey.fromBase58(participantB);
540
+ const channelPublicKey = PublicKey.fromBase58(channelAddress);
425
541
  const nonceField = Field(nonce);
542
+ let token = null;
543
+ let channelPrivateKey = null;
544
+ if (this.isUsdcToken) {
545
+ await this._assertTokenDecimals();
546
+ ({ token } = await this._getTokenContext());
547
+ const channelKeyBase58 = options?.channelPrivateKey ?? this._channelKeyCache.get(channelAddress);
548
+ if (!channelKeyBase58) {
549
+ throw new MinaChannelError(`Cannot settle USDC channel ${channelAddress}: the channel/zkApp private key is ` +
550
+ 'required to authorize the channel-account USDC payouts but is not available. The ' +
551
+ 'channel must have been opened by this SDK instance, or channelPrivateKey must be ' +
552
+ 'supplied (#192).', exports.MINA_ERROR_CODES.INVALID_PARAMETERS, 'INVALID_PARAMETERS');
553
+ }
554
+ channelPrivateKey = PrivateKey.fromBase58(channelKeyBase58);
555
+ }
556
+ const fundCount = options?.fundParticipantTokenAccounts ?? 0;
426
557
  const txn = await Mina.transaction(this._feePayer(signerPublicKey), async () => {
558
+ if (token) {
559
+ if (fundCount > 0) {
560
+ AccountUpdate.fundNewAccount(signerPublicKey, fundCount);
561
+ }
562
+ if (balanceB > 0n) {
563
+ await token.transfer(channelPublicKey, pubB, UInt64.Unsafe.fromField(balB));
564
+ }
565
+ if (balanceA > 0n) {
566
+ await token.transfer(channelPublicKey, pubA, UInt64.Unsafe.fromField(balA));
567
+ }
568
+ }
427
569
  await zkApp.settle(balA, balB, saltField, pubA, pubB, nonceField);
428
570
  });
429
571
  await txn.prove();
430
- const sentTx = await txn.sign([signerPrivateKey]).send();
572
+ const signers = channelPrivateKey
573
+ ? [signerPrivateKey, channelPrivateKey]
574
+ : [signerPrivateKey];
575
+ const sentTx = await txn.sign(signers).send();
431
576
  const txHash = sentTx.hash ?? '';
432
- this._logger.info({ event: 'settle_channel', channelAddress, txHash }, 'Mina payment channel settled');
577
+ this._logger.info({ event: 'settle_channel', channelAddress, usdc: this.isUsdcToken, txHash }, 'Mina payment channel settled');
433
578
  return { txHash };
434
579
  }
435
580
  catch (err) {