digirails 0.1.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 (135) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +102 -0
  3. package/dist/agent.d.ts +72 -0
  4. package/dist/agent.d.ts.map +1 -0
  5. package/dist/agent.js +176 -0
  6. package/dist/agent.js.map +1 -0
  7. package/dist/config.d.ts +24 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +46 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/crypto/base58.d.ts +9 -0
  12. package/dist/crypto/base58.d.ts.map +1 -0
  13. package/dist/crypto/base58.js +107 -0
  14. package/dist/crypto/base58.js.map +1 -0
  15. package/dist/crypto/bech32.d.ts +9 -0
  16. package/dist/crypto/bech32.d.ts.map +1 -0
  17. package/dist/crypto/bech32.js +141 -0
  18. package/dist/crypto/bech32.js.map +1 -0
  19. package/dist/crypto/index.d.ts +6 -0
  20. package/dist/crypto/index.d.ts.map +1 -0
  21. package/dist/crypto/index.js +22 -0
  22. package/dist/crypto/index.js.map +1 -0
  23. package/dist/crypto/keys.d.ts +25 -0
  24. package/dist/crypto/keys.d.ts.map +1 -0
  25. package/dist/crypto/keys.js +129 -0
  26. package/dist/crypto/keys.js.map +1 -0
  27. package/dist/crypto/script.d.ts +12 -0
  28. package/dist/crypto/script.d.ts.map +1 -0
  29. package/dist/crypto/script.js +105 -0
  30. package/dist/crypto/script.js.map +1 -0
  31. package/dist/crypto/transaction.d.ts +47 -0
  32. package/dist/crypto/transaction.d.ts.map +1 -0
  33. package/dist/crypto/transaction.js +227 -0
  34. package/dist/crypto/transaction.js.map +1 -0
  35. package/dist/discovery/index.d.ts +2 -0
  36. package/dist/discovery/index.d.ts.map +1 -0
  37. package/dist/discovery/index.js +6 -0
  38. package/dist/discovery/index.js.map +1 -0
  39. package/dist/discovery/manifest_client.d.ts +9 -0
  40. package/dist/discovery/manifest_client.d.ts.map +1 -0
  41. package/dist/discovery/manifest_client.js +29 -0
  42. package/dist/discovery/manifest_client.js.map +1 -0
  43. package/dist/exceptions.d.ts +32 -0
  44. package/dist/exceptions.d.ts.map +1 -0
  45. package/dist/exceptions.js +72 -0
  46. package/dist/exceptions.js.map +1 -0
  47. package/dist/index.d.ts +31 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +135 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/models/enums.d.ts +48 -0
  52. package/dist/models/enums.d.ts.map +1 -0
  53. package/dist/models/enums.js +84 -0
  54. package/dist/models/enums.js.map +1 -0
  55. package/dist/models/index.d.ts +4 -0
  56. package/dist/models/index.d.ts.map +1 -0
  57. package/dist/models/index.js +20 -0
  58. package/dist/models/index.js.map +1 -0
  59. package/dist/models/manifest.d.ts +327 -0
  60. package/dist/models/manifest.d.ts.map +1 -0
  61. package/dist/models/manifest.js +47 -0
  62. package/dist/models/manifest.js.map +1 -0
  63. package/dist/models/messages.d.ts +336 -0
  64. package/dist/models/messages.d.ts.map +1 -0
  65. package/dist/models/messages.js +166 -0
  66. package/dist/models/messages.js.map +1 -0
  67. package/dist/network/constants.d.ts +51 -0
  68. package/dist/network/constants.d.ts.map +1 -0
  69. package/dist/network/constants.js +63 -0
  70. package/dist/network/constants.js.map +1 -0
  71. package/dist/network/index.d.ts +3 -0
  72. package/dist/network/index.d.ts.map +1 -0
  73. package/dist/network/index.js +19 -0
  74. package/dist/network/index.js.map +1 -0
  75. package/dist/network/params.d.ts +21 -0
  76. package/dist/network/params.d.ts.map +1 -0
  77. package/dist/network/params.js +57 -0
  78. package/dist/network/params.js.map +1 -0
  79. package/dist/opreturn.d.ts +25 -0
  80. package/dist/opreturn.d.ts.map +1 -0
  81. package/dist/opreturn.js +118 -0
  82. package/dist/opreturn.js.map +1 -0
  83. package/dist/payment/buyer.d.ts +29 -0
  84. package/dist/payment/buyer.d.ts.map +1 -0
  85. package/dist/payment/buyer.js +118 -0
  86. package/dist/payment/buyer.js.map +1 -0
  87. package/dist/payment/flow.d.ts +20 -0
  88. package/dist/payment/flow.d.ts.map +1 -0
  89. package/dist/payment/flow.js +29 -0
  90. package/dist/payment/flow.js.map +1 -0
  91. package/dist/payment/index.d.ts +5 -0
  92. package/dist/payment/index.d.ts.map +1 -0
  93. package/dist/payment/index.js +13 -0
  94. package/dist/payment/index.js.map +1 -0
  95. package/dist/payment/seller.d.ts +27 -0
  96. package/dist/payment/seller.d.ts.map +1 -0
  97. package/dist/payment/seller.js +193 -0
  98. package/dist/payment/seller.js.map +1 -0
  99. package/dist/payment/verification.d.ts +8 -0
  100. package/dist/payment/verification.d.ts.map +1 -0
  101. package/dist/payment/verification.js +89 -0
  102. package/dist/payment/verification.js.map +1 -0
  103. package/dist/rpc/client.d.ts +21 -0
  104. package/dist/rpc/client.d.ts.map +1 -0
  105. package/dist/rpc/client.js +131 -0
  106. package/dist/rpc/client.js.map +1 -0
  107. package/dist/rpc/index.d.ts +2 -0
  108. package/dist/rpc/index.d.ts.map +1 -0
  109. package/dist/rpc/index.js +6 -0
  110. package/dist/rpc/index.js.map +1 -0
  111. package/dist/server.d.ts +24 -0
  112. package/dist/server.d.ts.map +1 -0
  113. package/dist/server.js +104 -0
  114. package/dist/server.js.map +1 -0
  115. package/dist/version.d.ts +2 -0
  116. package/dist/version.d.ts.map +1 -0
  117. package/dist/version.js +5 -0
  118. package/dist/version.js.map +1 -0
  119. package/dist/wallet/index.d.ts +4 -0
  120. package/dist/wallet/index.d.ts.map +1 -0
  121. package/dist/wallet/index.js +14 -0
  122. package/dist/wallet/index.js.map +1 -0
  123. package/dist/wallet/keystore.d.ts +32 -0
  124. package/dist/wallet/keystore.d.ts.map +1 -0
  125. package/dist/wallet/keystore.js +111 -0
  126. package/dist/wallet/keystore.js.map +1 -0
  127. package/dist/wallet/utxo.d.ts +32 -0
  128. package/dist/wallet/utxo.d.ts.map +1 -0
  129. package/dist/wallet/utxo.js +88 -0
  130. package/dist/wallet/utxo.js.map +1 -0
  131. package/dist/wallet/wallet.d.ts +52 -0
  132. package/dist/wallet/wallet.d.ts.map +1 -0
  133. package/dist/wallet/wallet.js +249 -0
  134. package/dist/wallet/wallet.js.map +1 -0
  135. package/package.json +43 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 DigiRails Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,102 @@
1
+ # digirails
2
+
3
+ Node.js/TypeScript SDK for the [DR-Pay protocol](https://github.com/digirails-protocol/digirails-spec) — permissionless AI agent payments on DigiByte.
4
+
5
+ ## What is this?
6
+
7
+ DigiRails enables autonomous AI agents to discover, negotiate with, and pay each other using DigiByte's Layer 1 blockchain. This SDK implements the DR-Pay protocol: the 4-message payment flow, agent identity, service manifests, and on-chain data encoding.
8
+
9
+ Every payment settles on-chain as a standard DigiByte transaction. No sidechains, no Layer 2, no API keys.
10
+
11
+ ## Install
12
+
13
+ ```bash
14
+ npm install digirails
15
+ ```
16
+
17
+ ## Quick Start
18
+
19
+ ### Buyer — purchase a service in one call
20
+
21
+ ```typescript
22
+ import { Agent, REGTEST } from 'digirails';
23
+
24
+ const buyer = Agent.generate({
25
+ network: REGTEST,
26
+ rpcUrl: 'http://127.0.0.1:18443',
27
+ rpcUsername: 'digirails',
28
+ rpcPassword: 'digirails',
29
+ });
30
+
31
+ const result = await buyer.requestService({
32
+ sellerUrl: 'http://127.0.0.1:9001',
33
+ serviceId: 'echo',
34
+ serviceParams: { message: 'Hello from DigiRails!' },
35
+ maxAmount: '0.01',
36
+ });
37
+ console.log(result.result);
38
+
39
+ await buyer.close();
40
+ ```
41
+
42
+ ### Seller — offer a service
43
+
44
+ ```typescript
45
+ import { Agent, ServiceCategory, REGTEST } from 'digirails';
46
+
47
+ const seller = Agent.generate({
48
+ network: REGTEST,
49
+ rpcUrl: 'http://127.0.0.1:18443',
50
+ rpcUsername: 'digirails',
51
+ rpcPassword: 'digirails',
52
+ });
53
+
54
+ seller.registerService({
55
+ serviceId: 'echo',
56
+ handler: async (params) => ({ echo: params?.message ?? '' }),
57
+ price: '0.001',
58
+ category: ServiceCategory.GENERAL_COMPUTE,
59
+ });
60
+
61
+ await seller.serve('0.0.0.0', 9001);
62
+ ```
63
+
64
+ ## What happens under the hood
65
+
66
+ ```
67
+ Buyer Seller
68
+ | |
69
+ | GET /.well-known/digirails.json |
70
+ |----------------------------------->| 1. Discover manifest
71
+ |<-----------------------------------|
72
+ | |
73
+ | POST /drpay/request |
74
+ |----------------------------------->| 2. SERVICE_REQUEST
75
+ |<-----------------------------------| 3. PAYMENT_INVOICE
76
+ | |
77
+ | [build, sign, broadcast tx] |
78
+ | |
79
+ | POST /drpay/broadcast |
80
+ |----------------------------------->| 4. PAYMENT_BROADCAST
81
+ | | 5. Verify payment
82
+ | | 6. Execute service
83
+ |<-----------------------------------| 7. SERVICE_DELIVERY
84
+ ```
85
+
86
+ ## Features
87
+
88
+ - **Light mode**: No DigiByte node required. Connects to `rpc.digirails.org` or any RPC endpoint.
89
+ - **Async-native**: Built on native `fetch` and `async/await`.
90
+ - **Type-safe**: Zod-validated protocol messages with full TypeScript types.
91
+ - **3 dependencies**: @noble/curves, @noble/hashes, zod. Zero native modules.
92
+ - **SegWit transactions**: BIP-143 signing for P2WPKH inputs.
93
+ - **Encrypted keystore**: AES-256-GCM encrypted key files.
94
+ - **All 18 service categories** from the DR-Pay spec.
95
+
96
+ ## Protocol Version
97
+
98
+ Implements DR-Pay specification v0.3.0.
99
+
100
+ ## License
101
+
102
+ MIT
@@ -0,0 +1,72 @@
1
+ import { Wallet } from './wallet/wallet';
2
+ import { RpcClient } from './rpc/client';
3
+ import { ServiceHandler } from './payment/seller';
4
+ import { Manifest } from './models/manifest';
5
+ import { ConfirmationTier, ServiceCategory } from './models/enums';
6
+ import { ServiceDelivery } from './models/messages';
7
+ import { DigiRailsConfig } from './config';
8
+ import { NetworkParams } from './network/params';
9
+ export declare class Agent {
10
+ private wallet;
11
+ private rpc;
12
+ private sellerFlow;
13
+ private server;
14
+ private config;
15
+ private _services;
16
+ private constructor();
17
+ /**
18
+ * Create an Agent from a config or individual params.
19
+ */
20
+ static create(params: {
21
+ config?: Partial<DigiRailsConfig>;
22
+ network?: NetworkParams;
23
+ privateKey?: string | Buffer;
24
+ rpcUrl?: string;
25
+ rpcUsername?: string;
26
+ rpcPassword?: string;
27
+ }): Agent;
28
+ /** Generate a fresh agent with a new keypair */
29
+ static generate(params?: {
30
+ network?: NetworkParams;
31
+ rpcUrl?: string;
32
+ rpcUsername?: string;
33
+ rpcPassword?: string;
34
+ }): Agent;
35
+ /** Agent's DigiByte address */
36
+ get address(): string;
37
+ /** Agent's compressed public key */
38
+ get publicKey(): Buffer;
39
+ /** Access the underlying wallet */
40
+ getWallet(): Wallet;
41
+ /** Access the RPC client */
42
+ getRpc(): RpcClient | null;
43
+ /**
44
+ * Request and pay for a service in one call.
45
+ * Set test=true to mark the on-chain OP_RETURN with the test flag.
46
+ */
47
+ requestService(params: {
48
+ sellerUrl: string;
49
+ serviceId: string;
50
+ serviceParams?: Record<string, unknown>;
51
+ maxAmount?: string;
52
+ confirmationTier?: ConfirmationTier;
53
+ test?: boolean;
54
+ }): Promise<ServiceDelivery>;
55
+ /** Fetch and validate a seller's manifest */
56
+ discover(url: string): Promise<Manifest | null>;
57
+ /** Register a service handler */
58
+ registerService(params: {
59
+ serviceId: string;
60
+ handler: ServiceHandler;
61
+ price: string;
62
+ description?: string;
63
+ category?: ServiceCategory;
64
+ }): void;
65
+ /** Start serving registered services via HTTP */
66
+ serve(host?: string, port?: number): Promise<void>;
67
+ /** Get wallet balance in DGB */
68
+ balance(): Promise<string>;
69
+ /** Close the agent and release resources */
70
+ close(): Promise<void>;
71
+ }
72
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAc,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAI9D,OAAO,EAAE,QAAQ,EAAW,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAiB,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAW,MAAM,kBAAkB,CAAC;AAE1D,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,GAAG,CAAmB;IAC9B,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAiB;IAElC,OAAO;IAMP;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;QACpB,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;QAClC,OAAO,CAAC,EAAE,aAAa,CAAC;QACxB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,KAAK;IAqCT,gDAAgD;IAChD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QACvB,OAAO,CAAC,EAAE,aAAa,CAAC;QACxB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,KAAK;IAYT,+BAA+B;IAC/B,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,oCAAoC;IACpC,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,mCAAmC;IACnC,SAAS,IAAI,MAAM;IAInB,4BAA4B;IAC5B,MAAM,IAAI,SAAS,GAAG,IAAI;IAM1B;;;OAGG;IACG,cAAc,CAAC,MAAM,EAAE;QAC3B,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACxC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;QACpC,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,GAAG,OAAO,CAAC,eAAe,CAAC;IAY5B,6CAA6C;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAUrD,iCAAiC;IACjC,eAAe,CAAC,MAAM,EAAE;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,cAAc,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,eAAe,CAAC;KAC5B,GAAG,IAAI;IAyBR,iDAAiD;IAC3C,KAAK,CAAC,IAAI,SAAY,EAAE,IAAI,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBzD,gCAAgC;IAC1B,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAMhC,4CAA4C;IACtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAK7B"}
package/dist/agent.js ADDED
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Agent = void 0;
4
+ /**
5
+ * Agent: unified high-level API for DigiRails.
6
+ * Combines wallet, RPC, payment flow, and server into a single interface.
7
+ */
8
+ const keys_1 = require("./crypto/keys");
9
+ const keys_2 = require("./crypto/keys");
10
+ const wallet_1 = require("./wallet/wallet");
11
+ const client_1 = require("./rpc/client");
12
+ const seller_1 = require("./payment/seller");
13
+ const server_1 = require("./server");
14
+ const manifest_client_1 = require("./discovery/manifest_client");
15
+ const flow_1 = require("./payment/flow");
16
+ const config_1 = require("./config");
17
+ const params_1 = require("./network/params");
18
+ class Agent {
19
+ wallet;
20
+ rpc;
21
+ sellerFlow = null;
22
+ server = null;
23
+ config;
24
+ _services = [];
25
+ constructor(wallet, config, rpc) {
26
+ this.wallet = wallet;
27
+ this.config = config;
28
+ this.rpc = rpc;
29
+ }
30
+ /**
31
+ * Create an Agent from a config or individual params.
32
+ */
33
+ static create(params) {
34
+ const cfg = (0, config_1.defaultConfig)(params.config);
35
+ if (params.network)
36
+ cfg.network = params.network;
37
+ // Resolve private key
38
+ let privkey;
39
+ const pk = params.privateKey ?? cfg.privateKey;
40
+ if (!pk) {
41
+ throw new Error('No private key provided');
42
+ }
43
+ if (Buffer.isBuffer(pk)) {
44
+ privkey = pk;
45
+ }
46
+ else if (typeof pk === 'string') {
47
+ if (pk.length === 64) {
48
+ // Hex
49
+ privkey = Buffer.from(pk, 'hex');
50
+ }
51
+ else {
52
+ // WIF
53
+ const [key] = (0, keys_2.wifToPrivkey)(pk);
54
+ privkey = key;
55
+ }
56
+ }
57
+ else {
58
+ throw new Error('Invalid private key format');
59
+ }
60
+ // RPC client
61
+ const rpcUrl = params.rpcUrl ?? cfg.rpcUrl ?? cfg.network.defaultRpcUrl;
62
+ const rpc = new client_1.RpcClient(rpcUrl, params.rpcUsername ?? cfg.rpcUsername, params.rpcPassword ?? cfg.rpcPassword);
63
+ const wallet = new wallet_1.Wallet(privkey, cfg.network, rpc);
64
+ return new Agent(wallet, cfg, rpc);
65
+ }
66
+ /** Generate a fresh agent with a new keypair */
67
+ static generate(params) {
68
+ const network = params?.network ?? params_1.MAINNET;
69
+ const [privkey] = (0, keys_1.generateKeypair)(network);
70
+ return Agent.create({
71
+ network,
72
+ privateKey: privkey,
73
+ rpcUrl: params?.rpcUrl,
74
+ rpcUsername: params?.rpcUsername,
75
+ rpcPassword: params?.rpcPassword,
76
+ });
77
+ }
78
+ /** Agent's DigiByte address */
79
+ get address() {
80
+ return this.wallet.address;
81
+ }
82
+ /** Agent's compressed public key */
83
+ get publicKey() {
84
+ return this.wallet.publicKey;
85
+ }
86
+ /** Access the underlying wallet */
87
+ getWallet() {
88
+ return this.wallet;
89
+ }
90
+ /** Access the RPC client */
91
+ getRpc() {
92
+ return this.rpc;
93
+ }
94
+ // ---------- Buyer methods ----------
95
+ /**
96
+ * Request and pay for a service in one call.
97
+ * Set test=true to mark the on-chain OP_RETURN with the test flag.
98
+ */
99
+ async requestService(params) {
100
+ return (0, flow_1.buy)({
101
+ wallet: this.wallet,
102
+ sellerUrl: params.sellerUrl,
103
+ serviceId: params.serviceId,
104
+ serviceParams: params.serviceParams,
105
+ maxAmount: params.maxAmount,
106
+ confirmationTier: params.confirmationTier,
107
+ test: params.test,
108
+ });
109
+ }
110
+ /** Fetch and validate a seller's manifest */
111
+ async discover(url) {
112
+ try {
113
+ return await (0, manifest_client_1.fetchManifest)(url);
114
+ }
115
+ catch {
116
+ return null;
117
+ }
118
+ }
119
+ // ---------- Seller methods ----------
120
+ /** Register a service handler */
121
+ registerService(params) {
122
+ if (!this.sellerFlow) {
123
+ this.sellerFlow = new seller_1.SellerFlow(this.wallet, this.config.network, this.rpc ?? undefined);
124
+ }
125
+ const service = {
126
+ id: params.serviceId,
127
+ description: params.description ?? '',
128
+ pricing: {
129
+ model: 'per-request',
130
+ amount: params.price,
131
+ currency: 'DGB',
132
+ },
133
+ endpoint: `/drpay/request`,
134
+ payment: {
135
+ confirmations_required: 0,
136
+ max_invoice_age_seconds: 300,
137
+ streaming_supported: false,
138
+ },
139
+ };
140
+ this._services.push(service);
141
+ this.sellerFlow.registerService(service, params.handler);
142
+ }
143
+ /** Start serving registered services via HTTP */
144
+ async serve(host = '0.0.0.0', port = 8080) {
145
+ if (!this.sellerFlow) {
146
+ throw new Error('No services registered');
147
+ }
148
+ const manifest = {
149
+ drpay: '0.2.0',
150
+ agent: this.address,
151
+ address: this.address,
152
+ services: this._services,
153
+ };
154
+ this.server = new server_1.DigiRailsServer({
155
+ sellerFlow: this.sellerFlow,
156
+ manifest,
157
+ host,
158
+ port,
159
+ });
160
+ await this.server.start();
161
+ }
162
+ // ---------- Wallet methods ----------
163
+ /** Get wallet balance in DGB */
164
+ async balance() {
165
+ return this.wallet.balance();
166
+ }
167
+ // ---------- Lifecycle ----------
168
+ /** Close the agent and release resources */
169
+ async close() {
170
+ if (this.server) {
171
+ await this.server.stop();
172
+ }
173
+ }
174
+ }
175
+ exports.Agent = Agent;
176
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * DigiRails configuration management.
3
+ */
4
+ import { NetworkParams } from './network/params';
5
+ export interface DigiRailsConfig {
6
+ network: NetworkParams;
7
+ mode: 'light' | 'full';
8
+ rpcUrl?: string;
9
+ rpcUsername?: string;
10
+ rpcPassword?: string;
11
+ privateKey?: string;
12
+ keyfilePath?: string;
13
+ keyfilePassword?: string;
14
+ envKeyVar?: string;
15
+ spendingLimitPerTx: string;
16
+ spendingLimitPerHour: string;
17
+ }
18
+ /** Default configuration */
19
+ export declare function defaultConfig(overrides?: Partial<DigiRailsConfig>): DigiRailsConfig;
20
+ /** Create config from environment variables */
21
+ export declare function configFromEnv(): DigiRailsConfig;
22
+ /** Create regtest configuration */
23
+ export declare function regtestConfig(overrides?: Partial<DigiRailsConfig>): DigiRailsConfig;
24
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,aAAa,EAAgC,MAAM,kBAAkB,CAAC;AAE/E,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,aAAa,CAAC;IACvB,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,4BAA4B;AAC5B,wBAAgB,aAAa,CAAC,SAAS,GAAE,OAAO,CAAC,eAAe,CAAM,GAAG,eAAe,CAQvF;AAED,+CAA+C;AAC/C,wBAAgB,aAAa,IAAI,eAAe,CAc/C;AAED,mCAAmC;AACnC,wBAAgB,aAAa,CAAC,SAAS,GAAE,OAAO,CAAC,eAAe,CAAM,GAAG,eAAe,CASvF"}
package/dist/config.js ADDED
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultConfig = defaultConfig;
4
+ exports.configFromEnv = configFromEnv;
5
+ exports.regtestConfig = regtestConfig;
6
+ /**
7
+ * DigiRails configuration management.
8
+ */
9
+ const params_1 = require("./network/params");
10
+ /** Default configuration */
11
+ function defaultConfig(overrides = {}) {
12
+ return {
13
+ network: params_1.MAINNET,
14
+ mode: 'light',
15
+ spendingLimitPerTx: '1.0',
16
+ spendingLimitPerHour: '100.0',
17
+ ...overrides,
18
+ };
19
+ }
20
+ /** Create config from environment variables */
21
+ function configFromEnv() {
22
+ const networkName = process.env['DIGIRAILS_NETWORK'] ?? 'mainnet';
23
+ const network = (0, params_1.getNetwork)(networkName);
24
+ return {
25
+ network,
26
+ mode: process.env['DIGIRAILS_MODE'] ?? 'light',
27
+ rpcUrl: process.env['DIGIRAILS_RPC_URL'],
28
+ rpcUsername: process.env['DIGIRAILS_RPC_USER'],
29
+ rpcPassword: process.env['DIGIRAILS_RPC_PASS'],
30
+ privateKey: process.env['DIGIRAILS_PRIVATE_KEY'],
31
+ spendingLimitPerTx: '1.0',
32
+ spendingLimitPerHour: '100.0',
33
+ };
34
+ }
35
+ /** Create regtest configuration */
36
+ function regtestConfig(overrides = {}) {
37
+ return {
38
+ network: params_1.REGTEST,
39
+ mode: 'full',
40
+ rpcUrl: 'http://127.0.0.1:18443',
41
+ spendingLimitPerTx: '1000.0',
42
+ spendingLimitPerHour: '10000.0',
43
+ ...overrides,
44
+ };
45
+ }
46
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;AAoBA,sCAQC;AAGD,sCAcC;AAGD,sCASC;AAzDD;;GAEG;AACH,6CAA+E;AAgB/E,4BAA4B;AAC5B,SAAgB,aAAa,CAAC,YAAsC,EAAE;IACpE,OAAO;QACL,OAAO,EAAE,gBAAO;QAChB,IAAI,EAAE,OAAO;QACb,kBAAkB,EAAE,KAAK;QACzB,oBAAoB,EAAE,OAAO;QAC7B,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,+CAA+C;AAC/C,SAAgB,aAAa;IAC3B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,SAAS,CAAC;IAClE,MAAM,OAAO,GAAG,IAAA,mBAAU,EAAC,WAAW,CAAC,CAAC;IAExC,OAAO;QACL,OAAO;QACP,IAAI,EAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAsB,IAAI,OAAO;QACpE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACxC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;QAC9C,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;QAC9C,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;QAChD,kBAAkB,EAAE,KAAK;QACzB,oBAAoB,EAAE,OAAO;KAC9B,CAAC;AACJ,CAAC;AAED,mCAAmC;AACnC,SAAgB,aAAa,CAAC,YAAsC,EAAE;IACpE,OAAO;QACL,OAAO,EAAE,gBAAO;QAChB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,wBAAwB;QAChC,kBAAkB,EAAE,QAAQ;QAC5B,oBAAoB,EAAE,SAAS;QAC/B,GAAG,SAAS;KACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ /** Encode raw bytes to Base58 string */
2
+ export declare function b58encode(data: Uint8Array): string;
3
+ /** Decode Base58 string to raw bytes */
4
+ export declare function b58decode(s: string): Uint8Array;
5
+ /** Encode payload with 4-byte checksum (Base58Check) */
6
+ export declare function b58encodeCheck(payload: Uint8Array): string;
7
+ /** Decode Base58Check string, verifying checksum */
8
+ export declare function b58decodeCheck(s: string): Uint8Array;
9
+ //# sourceMappingURL=base58.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base58.d.ts","sourceRoot":"","sources":["../../src/crypto/base58.ts"],"names":[],"mappings":"AAkBA,wCAAwC;AACxC,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CA8BlD;AAED,wCAAwC;AACxC,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAiC/C;AAED,wDAAwD;AACxD,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAM1D;AAED,oDAAoD;AACpD,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAgBpD"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.b58encode = b58encode;
4
+ exports.b58decode = b58decode;
5
+ exports.b58encodeCheck = b58encodeCheck;
6
+ exports.b58decodeCheck = b58decodeCheck;
7
+ /**
8
+ * Base58Check encoding/decoding for legacy DigiByte addresses and WIF keys.
9
+ */
10
+ const sha256_1 = require("@noble/hashes/sha256");
11
+ const ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
12
+ const BASE = 58n;
13
+ const ALPHABET_MAP = new Map();
14
+ for (let i = 0; i < ALPHABET.length; i++) {
15
+ ALPHABET_MAP.set(ALPHABET[i], BigInt(i));
16
+ }
17
+ /** Double-SHA256 hash */
18
+ function doubleSha256(data) {
19
+ return (0, sha256_1.sha256)((0, sha256_1.sha256)(data));
20
+ }
21
+ /** Encode raw bytes to Base58 string */
22
+ function b58encode(data) {
23
+ if (data.length === 0)
24
+ return '';
25
+ // Count leading zeros
26
+ let leadingZeros = 0;
27
+ for (const byte of data) {
28
+ if (byte !== 0)
29
+ break;
30
+ leadingZeros++;
31
+ }
32
+ // Convert to bigint
33
+ let num = 0n;
34
+ for (const byte of data) {
35
+ num = num * 256n + BigInt(byte);
36
+ }
37
+ // Convert to base58
38
+ const chars = [];
39
+ while (num > 0n) {
40
+ const remainder = num % BASE;
41
+ num = num / BASE;
42
+ chars.push(ALPHABET[Number(remainder)]);
43
+ }
44
+ // Add leading '1's for leading zero bytes
45
+ for (let i = 0; i < leadingZeros; i++) {
46
+ chars.push('1');
47
+ }
48
+ return chars.reverse().join('');
49
+ }
50
+ /** Decode Base58 string to raw bytes */
51
+ function b58decode(s) {
52
+ if (s.length === 0)
53
+ return new Uint8Array(0);
54
+ // Count leading '1's
55
+ let leadingOnes = 0;
56
+ for (const ch of s) {
57
+ if (ch !== '1')
58
+ break;
59
+ leadingOnes++;
60
+ }
61
+ // Convert from base58 to bigint
62
+ let num = 0n;
63
+ for (const ch of s) {
64
+ const val = ALPHABET_MAP.get(ch);
65
+ if (val === undefined) {
66
+ throw new Error(`Invalid Base58 character: ${ch}`);
67
+ }
68
+ num = num * BASE + val;
69
+ }
70
+ // Convert bigint to bytes
71
+ const bytes = [];
72
+ while (num > 0n) {
73
+ bytes.push(Number(num & 0xffn));
74
+ num = num >> 8n;
75
+ }
76
+ bytes.reverse();
77
+ // Prepend leading zero bytes
78
+ const result = new Uint8Array(leadingOnes + bytes.length);
79
+ // Leading zeros are already 0 in Uint8Array
80
+ result.set(bytes, leadingOnes);
81
+ return result;
82
+ }
83
+ /** Encode payload with 4-byte checksum (Base58Check) */
84
+ function b58encodeCheck(payload) {
85
+ const checksum = doubleSha256(payload).slice(0, 4);
86
+ const data = new Uint8Array(payload.length + 4);
87
+ data.set(payload);
88
+ data.set(checksum, payload.length);
89
+ return b58encode(data);
90
+ }
91
+ /** Decode Base58Check string, verifying checksum */
92
+ function b58decodeCheck(s) {
93
+ const data = b58decode(s);
94
+ if (data.length < 5) {
95
+ throw new Error('Base58Check data too short');
96
+ }
97
+ const payload = data.slice(0, data.length - 4);
98
+ const checksum = data.slice(data.length - 4);
99
+ const expected = doubleSha256(payload).slice(0, 4);
100
+ for (let i = 0; i < 4; i++) {
101
+ if (checksum[i] !== expected[i]) {
102
+ throw new Error('Invalid Base58Check checksum');
103
+ }
104
+ }
105
+ return payload;
106
+ }
107
+ //# sourceMappingURL=base58.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base58.js","sourceRoot":"","sources":["../../src/crypto/base58.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Bech32 / Bech32m encoding for SegWit addresses (BIP-173 / BIP-350).
3
+ * DigiByte uses "dgb" (mainnet), "dgbt" (testnet), "dgbrt" (regtest) HRPs.
4
+ */
5
+ /** Encode a SegWit address */
6
+ export declare function encodeSegwitAddress(hrp: string, witver: number, witprog: Uint8Array): string | null;
7
+ /** Decode a SegWit address. Returns [witnessVersion, witnessProgram] or [null, null]. */
8
+ export declare function decodeSegwitAddress(hrp: string, addr: string): [number, Uint8Array] | [null, null];
9
+ //# sourceMappingURL=bech32.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bech32.d.ts","sourceRoot":"","sources":["../../src/crypto/bech32.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8EH,8BAA8B;AAC9B,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAcnG;AAED,yFAAyF;AACzF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CA6ClG"}