@antseed/node 0.2.110 → 0.2.111
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/plugin-loader.js +1 -1
- package/dist/config/plugin-loader.js.map +1 -1
- package/dist/discovery/index.d.ts +1 -0
- package/dist/discovery/index.d.ts.map +1 -1
- package/dist/discovery/index.js +1 -0
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/service-catalog.d.ts +83 -0
- package/dist/discovery/service-catalog.d.ts.map +1 -0
- package/dist/discovery/service-catalog.js +155 -0
- package/dist/discovery/service-catalog.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/model-identity.d.ts +19 -0
- package/dist/model-identity.d.ts.map +1 -0
- package/dist/model-identity.js +174 -0
- package/dist/model-identity.js.map +1 -0
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +7 -2
- package/dist/node.js.map +1 -1
- package/dist/payments/channel-store.d.ts +2 -0
- package/dist/payments/channel-store.d.ts.map +1 -1
- package/dist/payments/channel-store.js +14 -5
- package/dist/payments/channel-store.js.map +1 -1
- package/dist/reputation/index.d.ts +1 -0
- package/dist/reputation/index.d.ts.map +1 -1
- package/dist/reputation/index.js +1 -0
- package/dist/reputation/index.js.map +1 -1
- package/dist/reputation/model-reputation.d.ts +18 -0
- package/dist/reputation/model-reputation.d.ts.map +1 -0
- package/dist/reputation/model-reputation.js +28 -0
- package/dist/reputation/model-reputation.js.map +1 -0
- package/dist/reputation/on-chain-reputation.d.ts.map +1 -1
- package/dist/reputation/on-chain-reputation.js +9 -1
- package/dist/reputation/on-chain-reputation.js.map +1 -1
- package/dist/routing/model-route-ranking.d.ts +34 -0
- package/dist/routing/model-route-ranking.d.ts.map +1 -0
- package/dist/routing/model-route-ranking.js +136 -0
- package/dist/routing/model-route-ranking.js.map +1 -0
- package/dist/storage/migrations/channels/005_add_output_images.d.ts +3 -0
- package/dist/storage/migrations/channels/005_add_output_images.d.ts.map +1 -0
- package/dist/storage/migrations/channels/005_add_output_images.js +12 -0
- package/dist/storage/migrations/channels/005_add_output_images.js.map +1 -0
- package/dist/storage/migrations/channels/index.d.ts.map +1 -1
- package/dist/storage/migrations/channels/index.js +2 -1
- package/dist/storage/migrations/channels/index.js.map +1 -1
- package/package.json +15 -3
- package/dist/payments/evm/subpool-client.d.ts +0 -32
- package/dist/payments/evm/subpool-client.d.ts.map +0 -1
- package/dist/payments/evm/subpool-client.js +0 -158
- package/dist/payments/evm/subpool-client.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antseed/node",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.111",
|
|
4
4
|
"description": "Antseed Network protocol SDK — P2P inference marketplace",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -40,6 +40,18 @@
|
|
|
40
40
|
"./types": {
|
|
41
41
|
"import": "./dist/types/index.js",
|
|
42
42
|
"types": "./dist/types/index.d.ts"
|
|
43
|
+
},
|
|
44
|
+
"./model-identity": {
|
|
45
|
+
"import": "./dist/model-identity.js",
|
|
46
|
+
"types": "./dist/model-identity.d.ts"
|
|
47
|
+
},
|
|
48
|
+
"./model-routing": {
|
|
49
|
+
"import": "./dist/routing/model-route-ranking.js",
|
|
50
|
+
"types": "./dist/routing/model-route-ranking.d.ts"
|
|
51
|
+
},
|
|
52
|
+
"./on-chain-reputation": {
|
|
53
|
+
"import": "./dist/reputation/on-chain-reputation.js",
|
|
54
|
+
"types": "./dist/reputation/on-chain-reputation.d.ts"
|
|
43
55
|
}
|
|
44
56
|
},
|
|
45
57
|
"dependencies": {
|
|
@@ -49,9 +61,9 @@
|
|
|
49
61
|
"ethers": "~6.16.0",
|
|
50
62
|
"node-datachannel": "^0.7.0",
|
|
51
63
|
"tokenx": "^1.3.0",
|
|
52
|
-
"@antseed/protocol": "0.1.3",
|
|
53
64
|
"@antseed/api-adapter": "0.1.43",
|
|
54
|
-
"@antseed/buyer-core": "0.1.3"
|
|
65
|
+
"@antseed/buyer-core": "0.1.3",
|
|
66
|
+
"@antseed/protocol": "0.1.3"
|
|
55
67
|
},
|
|
56
68
|
"optionalDependencies": {
|
|
57
69
|
"keytar": "^7.9.0"
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { type AbstractSigner } from 'ethers';
|
|
2
|
-
import { BaseEvmClient } from './base-evm-client.js';
|
|
3
|
-
export interface SubPoolClientConfig {
|
|
4
|
-
rpcUrl: string;
|
|
5
|
-
fallbackRpcUrls?: string[];
|
|
6
|
-
contractAddress: string;
|
|
7
|
-
usdcAddress: string;
|
|
8
|
-
evmChainId?: number;
|
|
9
|
-
}
|
|
10
|
-
export declare class SubPoolClient extends BaseEvmClient {
|
|
11
|
-
private readonly _usdcAddress;
|
|
12
|
-
constructor(config: SubPoolClientConfig);
|
|
13
|
-
subscribe(signer: AbstractSigner, tierId: number): Promise<string>;
|
|
14
|
-
renewSubscription(signer: AbstractSigner, monthlyFee: bigint): Promise<string>;
|
|
15
|
-
cancelSubscription(signer: AbstractSigner): Promise<string>;
|
|
16
|
-
isSubscriptionActive(buyer: string): Promise<boolean>;
|
|
17
|
-
getRemainingDailyBudget(buyer: string): Promise<bigint>;
|
|
18
|
-
recordTokenUsage(signer: AbstractSigner, buyer: string, tokens: bigint): Promise<string>;
|
|
19
|
-
optIn(signer: AbstractSigner, tokenId: number): Promise<string>;
|
|
20
|
-
optOut(signer: AbstractSigner, tokenId: number): Promise<string>;
|
|
21
|
-
claimRevenue(signer: AbstractSigner): Promise<string>;
|
|
22
|
-
getProjectedRevenue(seller: string): Promise<bigint>;
|
|
23
|
-
getTier(tierId: number): Promise<{
|
|
24
|
-
monthlyFee: bigint;
|
|
25
|
-
dailyTokenBudget: bigint;
|
|
26
|
-
active: boolean;
|
|
27
|
-
}>;
|
|
28
|
-
getOptedInPeerCount(): Promise<bigint>;
|
|
29
|
-
currentEpoch(): Promise<bigint>;
|
|
30
|
-
currentEpochRevenue(): Promise<bigint>;
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=subpool-client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subpool-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/subpool-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA2BD,qBAAa,aAAc,SAAQ,aAAa;IAC9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,MAAM,EAAE,mBAAmB;IAOjC,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBlE,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmB9E,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAW3D,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrD,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKvD,gBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAaxF,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW/D,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAahE,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAWrD,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOpD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAMnG,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKtC,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAK/B,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;CAI7C"}
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import { Contract } from 'ethers';
|
|
2
|
-
import { BaseEvmClient } from './base-evm-client.js';
|
|
3
|
-
const ERC20_ABI = [
|
|
4
|
-
'function approve(address spender, uint256 amount) external returns (bool)',
|
|
5
|
-
];
|
|
6
|
-
const SUBPOOL_ABI = [
|
|
7
|
-
'function subscribe(uint256 tierId) external',
|
|
8
|
-
'function renewSubscription() external',
|
|
9
|
-
'function cancelSubscription() external',
|
|
10
|
-
'function isSubscriptionActive(address buyer) external view returns (bool)',
|
|
11
|
-
'function getRemainingDailyBudget(address buyer) external view returns (uint256)',
|
|
12
|
-
'function recordTokenUsage(address buyer, uint256 tokens) external',
|
|
13
|
-
'function optIn(uint256 tokenId) external',
|
|
14
|
-
'function optOut(uint256 tokenId) external',
|
|
15
|
-
'function claimRevenue() external',
|
|
16
|
-
'function distributeRevenue() external',
|
|
17
|
-
'function getProjectedRevenue(address seller) external view returns (uint256)',
|
|
18
|
-
'function getTier(uint256 tierId) external view returns (uint256 monthlyFee, uint256 dailyTokenBudget, bool active)',
|
|
19
|
-
'function getOptedInPeerCount() external view returns (uint256)',
|
|
20
|
-
'function currentEpoch() external view returns (uint256)',
|
|
21
|
-
'function currentEpochRevenue() external view returns (uint256)',
|
|
22
|
-
'function epochDuration() external view returns (uint256)',
|
|
23
|
-
'function epochStart() external view returns (uint256)',
|
|
24
|
-
'function tierCount() external view returns (uint256)',
|
|
25
|
-
];
|
|
26
|
-
export class SubPoolClient extends BaseEvmClient {
|
|
27
|
-
_usdcAddress;
|
|
28
|
-
constructor(config) {
|
|
29
|
-
super(config.rpcUrl, config.contractAddress, config.fallbackRpcUrls, config.evmChainId);
|
|
30
|
-
this._usdcAddress = config.usdcAddress;
|
|
31
|
-
}
|
|
32
|
-
// ─── Subscription Methods ──────────────────────────────────────────
|
|
33
|
-
async subscribe(signer, tierId) {
|
|
34
|
-
const connected = this._ensureConnected(signer);
|
|
35
|
-
const signerAddress = await connected.getAddress();
|
|
36
|
-
const contract = new Contract(this._contractAddress, SUBPOOL_ABI, connected);
|
|
37
|
-
// Fetch tier fee and approve USDC
|
|
38
|
-
const [monthlyFee] = await contract.getFunction('getTier')(tierId);
|
|
39
|
-
const usdc = new Contract(this._usdcAddress, ERC20_ABI, connected);
|
|
40
|
-
const approveNonce = await this._reserveNonce(signerAddress);
|
|
41
|
-
const approveTx = await usdc.getFunction('approve')(this._contractAddress, monthlyFee, { nonce: approveNonce });
|
|
42
|
-
const approveReceipt = await approveTx.wait();
|
|
43
|
-
if (!approveReceipt)
|
|
44
|
-
throw new Error('Transaction was dropped or replaced');
|
|
45
|
-
const nonce = await this._reserveNonce(signerAddress);
|
|
46
|
-
const tx = await contract.getFunction('subscribe')(tierId, { nonce });
|
|
47
|
-
const receipt = await tx.wait();
|
|
48
|
-
if (!receipt)
|
|
49
|
-
throw new Error('Transaction was dropped or replaced');
|
|
50
|
-
return receipt.hash;
|
|
51
|
-
}
|
|
52
|
-
async renewSubscription(signer, monthlyFee) {
|
|
53
|
-
const connected = this._ensureConnected(signer);
|
|
54
|
-
const signerAddress = await connected.getAddress();
|
|
55
|
-
// Approve USDC for renewal
|
|
56
|
-
const usdc = new Contract(this._usdcAddress, ERC20_ABI, connected);
|
|
57
|
-
const approveNonce = await this._reserveNonce(signerAddress);
|
|
58
|
-
const approveTx = await usdc.getFunction('approve')(this._contractAddress, monthlyFee, { nonce: approveNonce });
|
|
59
|
-
const approveReceipt = await approveTx.wait();
|
|
60
|
-
if (!approveReceipt)
|
|
61
|
-
throw new Error('Transaction was dropped or replaced');
|
|
62
|
-
const contract = new Contract(this._contractAddress, SUBPOOL_ABI, connected);
|
|
63
|
-
const nonce = await this._reserveNonce(signerAddress);
|
|
64
|
-
const tx = await contract.getFunction('renewSubscription')({ nonce });
|
|
65
|
-
const receipt = await tx.wait();
|
|
66
|
-
if (!receipt)
|
|
67
|
-
throw new Error('Transaction was dropped or replaced');
|
|
68
|
-
return receipt.hash;
|
|
69
|
-
}
|
|
70
|
-
async cancelSubscription(signer) {
|
|
71
|
-
const connected = this._ensureConnected(signer);
|
|
72
|
-
const signerAddress = await connected.getAddress();
|
|
73
|
-
const contract = new Contract(this._contractAddress, SUBPOOL_ABI, connected);
|
|
74
|
-
const nonce = await this._reserveNonce(signerAddress);
|
|
75
|
-
const tx = await contract.getFunction('cancelSubscription')({ nonce });
|
|
76
|
-
const receipt = await tx.wait();
|
|
77
|
-
if (!receipt)
|
|
78
|
-
throw new Error('Transaction was dropped or replaced');
|
|
79
|
-
return receipt.hash;
|
|
80
|
-
}
|
|
81
|
-
async isSubscriptionActive(buyer) {
|
|
82
|
-
const contract = new Contract(this._contractAddress, SUBPOOL_ABI, this._provider);
|
|
83
|
-
return contract.getFunction('isSubscriptionActive')(buyer);
|
|
84
|
-
}
|
|
85
|
-
async getRemainingDailyBudget(buyer) {
|
|
86
|
-
const contract = new Contract(this._contractAddress, SUBPOOL_ABI, this._provider);
|
|
87
|
-
return contract.getFunction('getRemainingDailyBudget')(buyer);
|
|
88
|
-
}
|
|
89
|
-
async recordTokenUsage(signer, buyer, tokens) {
|
|
90
|
-
const connected = this._ensureConnected(signer);
|
|
91
|
-
const signerAddress = await connected.getAddress();
|
|
92
|
-
const contract = new Contract(this._contractAddress, SUBPOOL_ABI, connected);
|
|
93
|
-
const nonce = await this._reserveNonce(signerAddress);
|
|
94
|
-
const tx = await contract.getFunction('recordTokenUsage')(buyer, tokens, { nonce });
|
|
95
|
-
const receipt = await tx.wait();
|
|
96
|
-
if (!receipt)
|
|
97
|
-
throw new Error('Transaction was dropped or replaced');
|
|
98
|
-
return receipt.hash;
|
|
99
|
-
}
|
|
100
|
-
// ─── Peer Methods ──────────────────────────────────────────────────
|
|
101
|
-
async optIn(signer, tokenId) {
|
|
102
|
-
const connected = this._ensureConnected(signer);
|
|
103
|
-
const signerAddress = await connected.getAddress();
|
|
104
|
-
const contract = new Contract(this._contractAddress, SUBPOOL_ABI, connected);
|
|
105
|
-
const nonce = await this._reserveNonce(signerAddress);
|
|
106
|
-
const tx = await contract.getFunction('optIn')(tokenId, { nonce });
|
|
107
|
-
const receipt = await tx.wait();
|
|
108
|
-
if (!receipt)
|
|
109
|
-
throw new Error('Transaction was dropped or replaced');
|
|
110
|
-
return receipt.hash;
|
|
111
|
-
}
|
|
112
|
-
async optOut(signer, tokenId) {
|
|
113
|
-
const connected = this._ensureConnected(signer);
|
|
114
|
-
const signerAddress = await connected.getAddress();
|
|
115
|
-
const contract = new Contract(this._contractAddress, SUBPOOL_ABI, connected);
|
|
116
|
-
const nonce = await this._reserveNonce(signerAddress);
|
|
117
|
-
const tx = await contract.getFunction('optOut')(tokenId, { nonce });
|
|
118
|
-
const receipt = await tx.wait();
|
|
119
|
-
if (!receipt)
|
|
120
|
-
throw new Error('Transaction was dropped or replaced');
|
|
121
|
-
return receipt.hash;
|
|
122
|
-
}
|
|
123
|
-
// ─── Revenue Methods ───────────────────────────────────────────────
|
|
124
|
-
async claimRevenue(signer) {
|
|
125
|
-
const connected = this._ensureConnected(signer);
|
|
126
|
-
const signerAddress = await connected.getAddress();
|
|
127
|
-
const contract = new Contract(this._contractAddress, SUBPOOL_ABI, connected);
|
|
128
|
-
const nonce = await this._reserveNonce(signerAddress);
|
|
129
|
-
const tx = await contract.getFunction('claimRevenue')({ nonce });
|
|
130
|
-
const receipt = await tx.wait();
|
|
131
|
-
if (!receipt)
|
|
132
|
-
throw new Error('Transaction was dropped or replaced');
|
|
133
|
-
return receipt.hash;
|
|
134
|
-
}
|
|
135
|
-
async getProjectedRevenue(seller) {
|
|
136
|
-
const contract = new Contract(this._contractAddress, SUBPOOL_ABI, this._provider);
|
|
137
|
-
return contract.getFunction('getProjectedRevenue')(seller);
|
|
138
|
-
}
|
|
139
|
-
// ─── View Methods ──────────────────────────────────────────────────
|
|
140
|
-
async getTier(tierId) {
|
|
141
|
-
const contract = new Contract(this._contractAddress, SUBPOOL_ABI, this._provider);
|
|
142
|
-
const [monthlyFee, dailyTokenBudget, active] = await contract.getFunction('getTier')(tierId);
|
|
143
|
-
return { monthlyFee, dailyTokenBudget, active };
|
|
144
|
-
}
|
|
145
|
-
async getOptedInPeerCount() {
|
|
146
|
-
const contract = new Contract(this._contractAddress, SUBPOOL_ABI, this._provider);
|
|
147
|
-
return contract.getFunction('getOptedInPeerCount')();
|
|
148
|
-
}
|
|
149
|
-
async currentEpoch() {
|
|
150
|
-
const contract = new Contract(this._contractAddress, SUBPOOL_ABI, this._provider);
|
|
151
|
-
return contract.getFunction('currentEpoch')();
|
|
152
|
-
}
|
|
153
|
-
async currentEpochRevenue() {
|
|
154
|
-
const contract = new Contract(this._contractAddress, SUBPOOL_ABI, this._provider);
|
|
155
|
-
return contract.getFunction('currentEpochRevenue')();
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
//# sourceMappingURL=subpool-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subpool-client.js","sourceRoot":"","sources":["../../../src/payments/evm/subpool-client.ts"],"names":[],"mappings":"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"}
|