duskware 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.
- package/README.md +150 -0
- package/dist/commands/credits.d.ts +7 -0
- package/dist/commands/credits.d.ts.map +1 -0
- package/dist/commands/credits.js +220 -0
- package/dist/commands/credits.js.map +1 -0
- package/dist/commands/inference.d.ts +7 -0
- package/dist/commands/inference.d.ts.map +1 -0
- package/dist/commands/inference.js +148 -0
- package/dist/commands/inference.js.map +1 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +158 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/memory.d.ts +7 -0
- package/dist/commands/memory.d.ts.map +1 -0
- package/dist/commands/memory.js +170 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/commands/sandbox.d.ts +7 -0
- package/dist/commands/sandbox.d.ts.map +1 -0
- package/dist/commands/sandbox.js +220 -0
- package/dist/commands/sandbox.js.map +1 -0
- package/dist/commands/skill.d.ts +7 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +255 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/spawn.d.ts +7 -0
- package/dist/commands/spawn.d.ts.map +1 -0
- package/dist/commands/spawn.js +225 -0
- package/dist/commands/spawn.js.map +1 -0
- package/dist/commands/specter.d.ts +7 -0
- package/dist/commands/specter.d.ts.map +1 -0
- package/dist/commands/specter.js +287 -0
- package/dist/commands/specter.js.map +1 -0
- package/dist/commands/status.d.ts +7 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +106 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/trust.d.ts +7 -0
- package/dist/commands/trust.d.ts.map +1 -0
- package/dist/commands/trust.js +230 -0
- package/dist/commands/trust.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/services/contracts.d.ts +40 -0
- package/dist/services/contracts.d.ts.map +1 -0
- package/dist/services/contracts.js +141 -0
- package/dist/services/contracts.js.map +1 -0
- package/dist/services/inference.d.ts +63 -0
- package/dist/services/inference.d.ts.map +1 -0
- package/dist/services/inference.js +118 -0
- package/dist/services/inference.js.map +1 -0
- package/dist/services/wallet.d.ts +35 -0
- package/dist/services/wallet.d.ts.map +1 -0
- package/dist/services/wallet.js +60 -0
- package/dist/services/wallet.js.map +1 -0
- package/dist/services/x402.d.ts +30 -0
- package/dist/services/x402.d.ts.map +1 -0
- package/dist/services/x402.js +92 -0
- package/dist/services/x402.js.map +1 -0
- package/dist/utils/config.d.ts +64 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +93 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/output.d.ts +29 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/output.js +100 -0
- package/dist/utils/output.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust.js","sourceRoot":"","sources":["../../src/commands/trust.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Duskware CLI
|
|
4
|
+
* Sovereign onchain runtime for AI agents
|
|
5
|
+
*
|
|
6
|
+
* Usage: npx duskware [command]
|
|
7
|
+
*/
|
|
8
|
+
import { Command } from 'commander';
|
|
9
|
+
import { initCommand } from './commands/init.js';
|
|
10
|
+
import { statusCommand } from './commands/status.js';
|
|
11
|
+
import { skillCommand } from './commands/skill.js';
|
|
12
|
+
import { spawnCommand } from './commands/spawn.js';
|
|
13
|
+
import { trustCommand } from './commands/trust.js';
|
|
14
|
+
import { memoryCommand } from './commands/memory.js';
|
|
15
|
+
import { inferenceCommand } from './commands/inference.js';
|
|
16
|
+
import { sandboxCommand } from './commands/sandbox.js';
|
|
17
|
+
import { specterCommand } from './commands/specter.js';
|
|
18
|
+
import { creditsCommand } from './commands/credits.js';
|
|
19
|
+
import * as output from './utils/output.js';
|
|
20
|
+
const program = new Command();
|
|
21
|
+
program
|
|
22
|
+
.name('duskware')
|
|
23
|
+
.description('Sovereign onchain runtime for AI agents')
|
|
24
|
+
.version('0.1.0');
|
|
25
|
+
// Register commands
|
|
26
|
+
program.addCommand(initCommand);
|
|
27
|
+
program.addCommand(statusCommand);
|
|
28
|
+
program.addCommand(skillCommand);
|
|
29
|
+
program.addCommand(spawnCommand);
|
|
30
|
+
program.addCommand(trustCommand);
|
|
31
|
+
program.addCommand(memoryCommand);
|
|
32
|
+
program.addCommand(inferenceCommand);
|
|
33
|
+
program.addCommand(sandboxCommand);
|
|
34
|
+
program.addCommand(specterCommand);
|
|
35
|
+
program.addCommand(creditsCommand);
|
|
36
|
+
// Help command with banner
|
|
37
|
+
program
|
|
38
|
+
.command('help')
|
|
39
|
+
.description('Show help information')
|
|
40
|
+
.action(() => {
|
|
41
|
+
output.banner();
|
|
42
|
+
program.outputHelp();
|
|
43
|
+
});
|
|
44
|
+
// Error handling
|
|
45
|
+
program.exitOverride((err) => {
|
|
46
|
+
if (err.code === 'commander.help' || err.code === 'commander.helpDisplayed') {
|
|
47
|
+
process.exit(0);
|
|
48
|
+
}
|
|
49
|
+
if (err.code !== 'commander.executeSubCommandAsync') {
|
|
50
|
+
output.error(err.message);
|
|
51
|
+
}
|
|
52
|
+
process.exit(1);
|
|
53
|
+
});
|
|
54
|
+
// Parse arguments
|
|
55
|
+
program.parse();
|
|
56
|
+
// Show help if no command
|
|
57
|
+
if (!process.argv.slice(2).length) {
|
|
58
|
+
output.banner();
|
|
59
|
+
console.log(program.helpInformation());
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAE5C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,yCAAyC,CAAC;KACtD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,oBAAoB;AACpB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAEnC,2BAA2B;AAC3B,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,GAAG,EAAE;IACX,MAAM,CAAC,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC,CAAC,CAAC;AAEL,iBAAiB;AACjB,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,EAAE;IAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,IAAI,GAAG,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,kCAAkC,EAAE,CAAC;QACpD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,kBAAkB;AAClB,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,0BAA0B;AAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,MAAM,CAAC,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contract Service
|
|
3
|
+
* Handles all contract interactions
|
|
4
|
+
*/
|
|
5
|
+
import { Contract, Wallet, ContractTransactionResponse } from 'ethers';
|
|
6
|
+
export declare const FEE_CONTROLLER_ABI: string[];
|
|
7
|
+
export declare const AGENT_IDENTITY_ABI: string[];
|
|
8
|
+
export declare const SKILL_NFT_ABI: string[];
|
|
9
|
+
export declare const SPAWN_PROTOCOL_ABI: string[];
|
|
10
|
+
export declare const TRUST_GRAPH_ABI: string[];
|
|
11
|
+
export declare const ERC20_ABI: string[];
|
|
12
|
+
export interface ContractInstances {
|
|
13
|
+
feeController: Contract;
|
|
14
|
+
agentIdentity: Contract;
|
|
15
|
+
skillNFT: Contract;
|
|
16
|
+
spawnProtocol: Contract;
|
|
17
|
+
trustGraph: Contract;
|
|
18
|
+
usdc: Contract;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Gets all contract instances for a network
|
|
22
|
+
*/
|
|
23
|
+
export declare function getContracts(wallet: Wallet, network: 'sepolia' | 'mainnet'): ContractInstances;
|
|
24
|
+
/**
|
|
25
|
+
* Gets a specific agent identity contract
|
|
26
|
+
*/
|
|
27
|
+
export declare function getAgentContract(agentAddress: string, wallet: Wallet, network: 'sepolia' | 'mainnet'): Contract;
|
|
28
|
+
/**
|
|
29
|
+
* Gets USDC contract
|
|
30
|
+
*/
|
|
31
|
+
export declare function getUsdcContract(wallet: Wallet, network: 'sepolia' | 'mainnet'): Contract;
|
|
32
|
+
/**
|
|
33
|
+
* Waits for transaction and returns receipt
|
|
34
|
+
*/
|
|
35
|
+
export declare function waitForTx(tx: ContractTransactionResponse): Promise<{
|
|
36
|
+
hash: string;
|
|
37
|
+
blockNumber: number;
|
|
38
|
+
gasUsed: bigint;
|
|
39
|
+
}>;
|
|
40
|
+
//# sourceMappingURL=contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/services/contracts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAmB,2BAA2B,EAAE,MAAM,QAAQ,CAAC;AAMxF,eAAO,MAAM,kBAAkB,UAQ9B,CAAC;AAEF,eAAO,MAAM,kBAAkB,UAsB9B,CAAC;AAEF,eAAO,MAAM,aAAa,UAezB,CAAC;AAEF,eAAO,MAAM,kBAAkB,UAa9B,CAAC;AAEF,eAAO,MAAM,eAAe,UAc3B,CAAC;AAEF,eAAO,MAAM,SAAS,UAOrB,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,QAAQ,CAAC;IACxB,aAAa,EAAE,QAAQ,CAAC;IACxB,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,EAAE,QAAQ,CAAC;IACxB,UAAU,EAAE,QAAQ,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,SAAS,GAAG,SAAS,GAC7B,iBAAiB,CAanB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,SAAS,GAAG,SAAS,GAC7B,QAAQ,CAIV;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,SAAS,GAAG,SAAS,GAC7B,QAAQ,CAKV;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,EAAE,EAAE,2BAA2B,GAAG,OAAO,CAAC;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAUD"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contract Service
|
|
3
|
+
* Handles all contract interactions
|
|
4
|
+
*/
|
|
5
|
+
import { Contract, JsonRpcProvider } from 'ethers';
|
|
6
|
+
import { getContractAddresses, getRpcUrl } from '../utils/config.js';
|
|
7
|
+
// Minimal ABIs for CLI operations
|
|
8
|
+
// Full ABIs would be imported from compiled contracts in production
|
|
9
|
+
export const FEE_CONTROLLER_ABI = [
|
|
10
|
+
'function feesActive() view returns (bool)',
|
|
11
|
+
'function getRegistrationFee() view returns (uint256)',
|
|
12
|
+
'function getSpawnFee() view returns (uint256)',
|
|
13
|
+
'function getDuskwareCut() view returns (uint256)',
|
|
14
|
+
'function treasuryAddress() view returns (address)',
|
|
15
|
+
'event FeesActivated(uint256 timestamp)',
|
|
16
|
+
'event FeesDeactivated(uint256 timestamp)',
|
|
17
|
+
];
|
|
18
|
+
export const AGENT_IDENTITY_ABI = [
|
|
19
|
+
// Read functions
|
|
20
|
+
'function agentName() view returns (string)',
|
|
21
|
+
'function capabilities(uint256) view returns (string)',
|
|
22
|
+
'function getCapabilities() view returns (string[])',
|
|
23
|
+
'function memoryRoot() view returns (string)',
|
|
24
|
+
'function memoryVersion() view returns (uint256)',
|
|
25
|
+
'function memoryUpdatedAt() view returns (uint256)',
|
|
26
|
+
'function reputationScore() view returns (uint256)',
|
|
27
|
+
'function parentAgent() view returns (address)',
|
|
28
|
+
'function spawnCount() view returns (uint256)',
|
|
29
|
+
'function totalEarnings() view returns (uint256)',
|
|
30
|
+
'function createdAt() view returns (uint256)',
|
|
31
|
+
'function owner() view returns (address)',
|
|
32
|
+
// Write functions
|
|
33
|
+
'function initialize(string name, string[] capabilities, address feeController, address usdcAddress) external',
|
|
34
|
+
'function updateMemoryRoot(string cid) external',
|
|
35
|
+
'function addCapability(string capability) external',
|
|
36
|
+
// Events
|
|
37
|
+
'event MemoryUpdated(string cid, uint256 version)',
|
|
38
|
+
'event CapabilityAdded(string capability)',
|
|
39
|
+
'event ReputationChanged(uint256 oldScore, uint256 newScore)',
|
|
40
|
+
];
|
|
41
|
+
export const SKILL_NFT_ABI = [
|
|
42
|
+
// Read functions - matches actual deployed contract
|
|
43
|
+
'function nextSkillId() view returns (uint256)',
|
|
44
|
+
'function skills(uint256) view returns (string name, string description, string skillCID, uint256 priceUSDC, address creatorAgent, uint256 usageCount, uint256 ratingTotal, uint256 ratingCount, bool isActive, string capability)',
|
|
45
|
+
'function isLicensed(address agent, uint256 skillId) view returns (bool)',
|
|
46
|
+
// Write functions
|
|
47
|
+
'function mintSkill(string name, string description, string skillCID, uint256 priceUSDC, string capability, uint256[] prerequisites) external returns (uint256)',
|
|
48
|
+
'function licenseSkill(uint256 skillId) external',
|
|
49
|
+
'function executeSkill(uint256 skillId) external',
|
|
50
|
+
'function rateSkill(uint256 skillId, uint256 score) external',
|
|
51
|
+
// Events
|
|
52
|
+
'event SkillMinted(uint256 indexed skillId, address indexed creator, string name)',
|
|
53
|
+
'event SkillLicensed(uint256 indexed skillId, address indexed licensee)',
|
|
54
|
+
'event SkillExecuted(uint256 indexed skillId, address indexed executor)',
|
|
55
|
+
'event SkillRated(uint256 indexed skillId, address indexed rater, uint256 score)',
|
|
56
|
+
];
|
|
57
|
+
export const SPAWN_PROTOCOL_ABI = [
|
|
58
|
+
// Read functions
|
|
59
|
+
'function getChildren(address parent) view returns (address[])',
|
|
60
|
+
'function getParent(address child) view returns (address)',
|
|
61
|
+
'function getSpawnDepth(address agent) view returns (uint256)',
|
|
62
|
+
'function getLineage(address agent) view returns (address[])',
|
|
63
|
+
'function getConstraints(address agent) view returns (tuple(string[] initialCapabilities, address[] skillAllowlist, uint256 dailySpendingLimit, uint256 maxSpawnDepth, bool isRevocable))',
|
|
64
|
+
// Write functions
|
|
65
|
+
'function spawn(string[] initialCapabilities, address[] skillAllowlist, uint256 dailySpendingLimit, uint256 maxSpawnDepth, bool isRevocable) external returns (address)',
|
|
66
|
+
'function revokeChild(address child) external',
|
|
67
|
+
// Events
|
|
68
|
+
'event AgentSpawned(address indexed parent, address indexed child, uint256 timestamp)',
|
|
69
|
+
'event AgentRevoked(address indexed parent, address indexed child)',
|
|
70
|
+
];
|
|
71
|
+
export const TRUST_GRAPH_ABI = [
|
|
72
|
+
// Read functions - matches actual deployed contract
|
|
73
|
+
'function getTrustScore(address agent) view returns (uint256)',
|
|
74
|
+
'function nextAttestationId() view returns (uint256)',
|
|
75
|
+
'function attestations(uint256 attestationId) view returns (address attester, address subject, uint256 score, string context, uint256 timestamp, uint256 attesterReputation, uint8 status)',
|
|
76
|
+
'function isRegisteredAgent(address agent) view returns (bool)',
|
|
77
|
+
'function trustScores(address agent) view returns (uint256)',
|
|
78
|
+
// Write functions
|
|
79
|
+
'function registerAgent(address agent) external',
|
|
80
|
+
'function attest(address subject, uint256 score, string context) external',
|
|
81
|
+
'function disputeAttestation(uint256 attestationId) external payable',
|
|
82
|
+
// Events
|
|
83
|
+
'event AttestationSubmitted(uint256 indexed attestationId, address indexed attester, address indexed subject, uint256 score)',
|
|
84
|
+
'event AgentRegistered(address indexed agent, uint256 timestamp)',
|
|
85
|
+
];
|
|
86
|
+
export const ERC20_ABI = [
|
|
87
|
+
'function balanceOf(address owner) view returns (uint256)',
|
|
88
|
+
'function allowance(address owner, address spender) view returns (uint256)',
|
|
89
|
+
'function approve(address spender, uint256 amount) external returns (bool)',
|
|
90
|
+
'function transfer(address to, uint256 amount) external returns (bool)',
|
|
91
|
+
'function decimals() view returns (uint8)',
|
|
92
|
+
'function symbol() view returns (string)',
|
|
93
|
+
];
|
|
94
|
+
/**
|
|
95
|
+
* Gets all contract instances for a network
|
|
96
|
+
*/
|
|
97
|
+
export function getContracts(wallet, network) {
|
|
98
|
+
const addresses = getContractAddresses(network);
|
|
99
|
+
const provider = new JsonRpcProvider(getRpcUrl(network));
|
|
100
|
+
const connectedWallet = wallet.connect(provider);
|
|
101
|
+
return {
|
|
102
|
+
feeController: new Contract(addresses.feeController, FEE_CONTROLLER_ABI, connectedWallet),
|
|
103
|
+
agentIdentity: new Contract(addresses.agentIdentity, AGENT_IDENTITY_ABI, connectedWallet),
|
|
104
|
+
skillNFT: new Contract(addresses.skillNFT, SKILL_NFT_ABI, connectedWallet),
|
|
105
|
+
spawnProtocol: new Contract(addresses.spawnProtocol, SPAWN_PROTOCOL_ABI, connectedWallet),
|
|
106
|
+
trustGraph: new Contract(addresses.trustGraph, TRUST_GRAPH_ABI, connectedWallet),
|
|
107
|
+
usdc: new Contract(addresses.usdc, ERC20_ABI, connectedWallet),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Gets a specific agent identity contract
|
|
112
|
+
*/
|
|
113
|
+
export function getAgentContract(agentAddress, wallet, network) {
|
|
114
|
+
const provider = new JsonRpcProvider(getRpcUrl(network));
|
|
115
|
+
const connectedWallet = wallet.connect(provider);
|
|
116
|
+
return new Contract(agentAddress, AGENT_IDENTITY_ABI, connectedWallet);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Gets USDC contract
|
|
120
|
+
*/
|
|
121
|
+
export function getUsdcContract(wallet, network) {
|
|
122
|
+
const addresses = getContractAddresses(network);
|
|
123
|
+
const provider = new JsonRpcProvider(getRpcUrl(network));
|
|
124
|
+
const connectedWallet = wallet.connect(provider);
|
|
125
|
+
return new Contract(addresses.usdc, ERC20_ABI, connectedWallet);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Waits for transaction and returns receipt
|
|
129
|
+
*/
|
|
130
|
+
export async function waitForTx(tx) {
|
|
131
|
+
const receipt = await tx.wait();
|
|
132
|
+
if (!receipt) {
|
|
133
|
+
throw new Error('Transaction failed - no receipt');
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
hash: receipt.hash,
|
|
137
|
+
blockNumber: receipt.blockNumber,
|
|
138
|
+
gasUsed: receipt.gasUsed,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=contracts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/services/contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inference Service
|
|
3
|
+
* Client for Duskware Inference Proxy
|
|
4
|
+
*/
|
|
5
|
+
import { Wallet } from 'ethers';
|
|
6
|
+
import type { DuskwareConfig } from '../utils/config.js';
|
|
7
|
+
export interface Message {
|
|
8
|
+
role: 'user' | 'assistant' | 'system';
|
|
9
|
+
content: string;
|
|
10
|
+
}
|
|
11
|
+
export interface InferenceRequest {
|
|
12
|
+
model: string;
|
|
13
|
+
messages: Message[];
|
|
14
|
+
maxTokens?: number;
|
|
15
|
+
}
|
|
16
|
+
export interface InferenceResponse {
|
|
17
|
+
id: string;
|
|
18
|
+
model: string;
|
|
19
|
+
content: string;
|
|
20
|
+
usage: {
|
|
21
|
+
promptTokens: number;
|
|
22
|
+
completionTokens: number;
|
|
23
|
+
totalTokens: number;
|
|
24
|
+
};
|
|
25
|
+
cost: {
|
|
26
|
+
amount: bigint;
|
|
27
|
+
currency: 'USDC';
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export interface Model {
|
|
31
|
+
id: string;
|
|
32
|
+
name: string;
|
|
33
|
+
pricePerKToken: bigint;
|
|
34
|
+
maxTokens: number;
|
|
35
|
+
}
|
|
36
|
+
export interface Quote {
|
|
37
|
+
model: string;
|
|
38
|
+
estimatedTokens: number;
|
|
39
|
+
price: bigint;
|
|
40
|
+
validUntil: number;
|
|
41
|
+
paymentAddress: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Gets available models and pricing
|
|
45
|
+
*/
|
|
46
|
+
export declare function getModels(): Promise<Model[]>;
|
|
47
|
+
/**
|
|
48
|
+
* Gets a price quote for an inference request
|
|
49
|
+
*/
|
|
50
|
+
export declare function getQuote(model: string, maxTokens: number, agentAddress: string): Promise<Quote>;
|
|
51
|
+
/**
|
|
52
|
+
* Sends an inference request with USDC payment
|
|
53
|
+
*/
|
|
54
|
+
export declare function sendInference(request: InferenceRequest, wallet: Wallet, config: DuskwareConfig): Promise<InferenceResponse>;
|
|
55
|
+
/**
|
|
56
|
+
* Gets prepaid balance for an agent
|
|
57
|
+
*/
|
|
58
|
+
export declare function getBalance(agentAddress: string): Promise<bigint>;
|
|
59
|
+
/**
|
|
60
|
+
* Prepays USDC to inference proxy
|
|
61
|
+
*/
|
|
62
|
+
export declare function prepay(amount: bigint, wallet: Wallet, config: DuskwareConfig): Promise<string>;
|
|
63
|
+
//# sourceMappingURL=inference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inference.d.ts","sourceRoot":"","sources":["../../src/services/inference.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIzD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAkBD;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAMlD;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,KAAK,CAAC,CAYhB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,iBAAiB,CAAC,CA8C5B;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOtE;AAED;;GAEG;AACH,wBAAsB,MAAM,CAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,MAAM,CAAC,CA4CjB"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inference Service
|
|
3
|
+
* Client for Duskware Inference Proxy
|
|
4
|
+
*/
|
|
5
|
+
import { signTransferAuthorization } from './x402.js';
|
|
6
|
+
const INFERENCE_URL = process.env.DUSKWARE_INFERENCE_URL || 'https://inference.duskware.xyz';
|
|
7
|
+
/**
|
|
8
|
+
* Gets available models and pricing
|
|
9
|
+
*/
|
|
10
|
+
export async function getModels() {
|
|
11
|
+
const response = await fetch(`${INFERENCE_URL}/models`);
|
|
12
|
+
if (!response.ok) {
|
|
13
|
+
throw new Error(`Failed to fetch models: ${response.statusText}`);
|
|
14
|
+
}
|
|
15
|
+
return response.json();
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Gets a price quote for an inference request
|
|
19
|
+
*/
|
|
20
|
+
export async function getQuote(model, maxTokens, agentAddress) {
|
|
21
|
+
const response = await fetch(`${INFERENCE_URL}/quote`, {
|
|
22
|
+
method: 'POST',
|
|
23
|
+
headers: { 'Content-Type': 'application/json' },
|
|
24
|
+
body: JSON.stringify({ model, maxTokens, agentAddress }),
|
|
25
|
+
});
|
|
26
|
+
if (!response.ok) {
|
|
27
|
+
throw new Error(`Failed to get quote: ${response.statusText}`);
|
|
28
|
+
}
|
|
29
|
+
return response.json();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Sends an inference request with USDC payment
|
|
33
|
+
*/
|
|
34
|
+
export async function sendInference(request, wallet, config) {
|
|
35
|
+
// Step 1: Get quote
|
|
36
|
+
const quote = await getQuote(request.model, request.maxTokens || 1000, config.agentAddress);
|
|
37
|
+
// Step 2: Sign USDC payment
|
|
38
|
+
const payment = await signTransferAuthorization(wallet, quote.paymentAddress, quote.price, 300, // 5 minute validity
|
|
39
|
+
config.network);
|
|
40
|
+
// Step 3: Send inference request with payment
|
|
41
|
+
const response = await fetch(`${INFERENCE_URL}/inference`, {
|
|
42
|
+
method: 'POST',
|
|
43
|
+
headers: { 'Content-Type': 'application/json' },
|
|
44
|
+
body: JSON.stringify({
|
|
45
|
+
model: request.model,
|
|
46
|
+
messages: request.messages,
|
|
47
|
+
maxTokens: request.maxTokens,
|
|
48
|
+
agentAddress: config.agentAddress,
|
|
49
|
+
payment: {
|
|
50
|
+
from: payment.from,
|
|
51
|
+
to: payment.to,
|
|
52
|
+
value: payment.value.toString(),
|
|
53
|
+
validAfter: payment.validAfter.toString(),
|
|
54
|
+
validBefore: payment.validBefore.toString(),
|
|
55
|
+
nonce: payment.nonce,
|
|
56
|
+
v: payment.v,
|
|
57
|
+
r: payment.r,
|
|
58
|
+
s: payment.s,
|
|
59
|
+
},
|
|
60
|
+
}),
|
|
61
|
+
});
|
|
62
|
+
if (!response.ok) {
|
|
63
|
+
const error = await response.json().catch(() => ({ message: response.statusText }));
|
|
64
|
+
throw new Error(`Inference failed: ${error.message}`);
|
|
65
|
+
}
|
|
66
|
+
return response.json();
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Gets prepaid balance for an agent
|
|
70
|
+
*/
|
|
71
|
+
export async function getBalance(agentAddress) {
|
|
72
|
+
const response = await fetch(`${INFERENCE_URL}/balance/${agentAddress}`);
|
|
73
|
+
if (!response.ok) {
|
|
74
|
+
throw new Error(`Failed to get balance: ${response.statusText}`);
|
|
75
|
+
}
|
|
76
|
+
const data = await response.json();
|
|
77
|
+
return BigInt(data.balance);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Prepays USDC to inference proxy
|
|
81
|
+
*/
|
|
82
|
+
export async function prepay(amount, wallet, config) {
|
|
83
|
+
// Get proxy's prepay address
|
|
84
|
+
const response = await fetch(`${INFERENCE_URL}/prepay-address`);
|
|
85
|
+
if (!response.ok) {
|
|
86
|
+
throw new Error(`Failed to get prepay address: ${response.statusText}`);
|
|
87
|
+
}
|
|
88
|
+
const addressData = await response.json();
|
|
89
|
+
const prepayAddress = addressData.address;
|
|
90
|
+
// Sign USDC transfer
|
|
91
|
+
const payment = await signTransferAuthorization(wallet, prepayAddress, amount, 3600, // 1 hour validity
|
|
92
|
+
config.network);
|
|
93
|
+
// Submit prepayment
|
|
94
|
+
const prepayResponse = await fetch(`${INFERENCE_URL}/prepay`, {
|
|
95
|
+
method: 'POST',
|
|
96
|
+
headers: { 'Content-Type': 'application/json' },
|
|
97
|
+
body: JSON.stringify({
|
|
98
|
+
agentAddress: config.agentAddress,
|
|
99
|
+
payment: {
|
|
100
|
+
from: payment.from,
|
|
101
|
+
to: payment.to,
|
|
102
|
+
value: payment.value.toString(),
|
|
103
|
+
validAfter: payment.validAfter.toString(),
|
|
104
|
+
validBefore: payment.validBefore.toString(),
|
|
105
|
+
nonce: payment.nonce,
|
|
106
|
+
v: payment.v,
|
|
107
|
+
r: payment.r,
|
|
108
|
+
s: payment.s,
|
|
109
|
+
},
|
|
110
|
+
}),
|
|
111
|
+
});
|
|
112
|
+
if (!prepayResponse.ok) {
|
|
113
|
+
throw new Error(`Prepay failed: ${prepayResponse.statusText}`);
|
|
114
|
+
}
|
|
115
|
+
const result = await prepayResponse.json();
|
|
116
|
+
return result.transactionHash;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=inference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inference.js","sourceRoot":"","sources":["../../src/services/inference.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wallet Service
|
|
3
|
+
* Manages agent wallet creation and operations
|
|
4
|
+
*/
|
|
5
|
+
import { Wallet, HDNodeWallet } from 'ethers';
|
|
6
|
+
export interface AgentWallet {
|
|
7
|
+
wallet: HDNodeWallet;
|
|
8
|
+
address: string;
|
|
9
|
+
privateKey: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Creates a new random wallet for an agent
|
|
13
|
+
*/
|
|
14
|
+
export declare function createWallet(): AgentWallet;
|
|
15
|
+
/**
|
|
16
|
+
* Loads existing wallet from config
|
|
17
|
+
*/
|
|
18
|
+
export declare function getWallet(): Wallet | null;
|
|
19
|
+
/**
|
|
20
|
+
* Gets wallet connected to provider
|
|
21
|
+
*/
|
|
22
|
+
export declare function getConnectedWallet(): Wallet | null;
|
|
23
|
+
/**
|
|
24
|
+
* Saves wallet to config file with secure permissions
|
|
25
|
+
*/
|
|
26
|
+
export declare function persistWallet(address: string, privateKey: string): void;
|
|
27
|
+
/**
|
|
28
|
+
* Gets ETH balance for gas
|
|
29
|
+
*/
|
|
30
|
+
export declare function getEthBalance(wallet: Wallet): Promise<bigint>;
|
|
31
|
+
/**
|
|
32
|
+
* Formats ETH balance for display
|
|
33
|
+
*/
|
|
34
|
+
export declare function formatEth(wei: bigint): string;
|
|
35
|
+
//# sourceMappingURL=wallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/services/wallet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAmB,YAAY,EAAE,MAAM,QAAQ,CAAC;AAG/D,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,WAAW,CAO1C;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,GAAG,IAAI,CAIzC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAOlD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAEvE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKnE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG7C"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wallet Service
|
|
3
|
+
* Manages agent wallet creation and operations
|
|
4
|
+
*/
|
|
5
|
+
import { Wallet, JsonRpcProvider } from 'ethers';
|
|
6
|
+
import { loadWallet, saveWallet, loadConfig, getRpcUrl } from '../utils/config.js';
|
|
7
|
+
/**
|
|
8
|
+
* Creates a new random wallet for an agent
|
|
9
|
+
*/
|
|
10
|
+
export function createWallet() {
|
|
11
|
+
const hdWallet = Wallet.createRandom();
|
|
12
|
+
return {
|
|
13
|
+
wallet: hdWallet,
|
|
14
|
+
address: hdWallet.address,
|
|
15
|
+
privateKey: hdWallet.privateKey,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Loads existing wallet from config
|
|
20
|
+
*/
|
|
21
|
+
export function getWallet() {
|
|
22
|
+
const walletConfig = loadWallet();
|
|
23
|
+
if (!walletConfig)
|
|
24
|
+
return null;
|
|
25
|
+
return new Wallet(walletConfig.privateKey);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Gets wallet connected to provider
|
|
29
|
+
*/
|
|
30
|
+
export function getConnectedWallet() {
|
|
31
|
+
const walletConfig = loadWallet();
|
|
32
|
+
const config = loadConfig();
|
|
33
|
+
if (!walletConfig || !config)
|
|
34
|
+
return null;
|
|
35
|
+
const provider = new JsonRpcProvider(getRpcUrl(config.network));
|
|
36
|
+
return new Wallet(walletConfig.privateKey, provider);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Saves wallet to config file with secure permissions
|
|
40
|
+
*/
|
|
41
|
+
export function persistWallet(address, privateKey) {
|
|
42
|
+
saveWallet({ address, privateKey });
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Gets ETH balance for gas
|
|
46
|
+
*/
|
|
47
|
+
export async function getEthBalance(wallet) {
|
|
48
|
+
if (!wallet.provider) {
|
|
49
|
+
throw new Error('Wallet not connected to provider');
|
|
50
|
+
}
|
|
51
|
+
return wallet.provider.getBalance(wallet.address);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Formats ETH balance for display
|
|
55
|
+
*/
|
|
56
|
+
export function formatEth(wei) {
|
|
57
|
+
const eth = Number(wei) / 1e18;
|
|
58
|
+
return `${eth.toFixed(6)} ETH`;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=wallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/services/wallet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAgB,MAAM,QAAQ,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAQnF;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;IACvC,OAAO;QACL,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,UAAU,EAAE,QAAQ,CAAC,UAAU;KAChC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,MAAM,YAAY,GAAG,UAAU,EAAE,CAAC;IAClC,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAC/B,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,YAAY,GAAG,UAAU,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAE1C,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,UAAkB;IAC/D,UAAU,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAc;IAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAC/B,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* x402 Payment Service
|
|
3
|
+
* EIP-3009 transferWithAuthorization for gasless USDC payments
|
|
4
|
+
*/
|
|
5
|
+
import { Wallet } from 'ethers';
|
|
6
|
+
export interface TransferAuthorization {
|
|
7
|
+
from: string;
|
|
8
|
+
to: string;
|
|
9
|
+
value: bigint;
|
|
10
|
+
validAfter: bigint;
|
|
11
|
+
validBefore: bigint;
|
|
12
|
+
nonce: string;
|
|
13
|
+
v: number;
|
|
14
|
+
r: string;
|
|
15
|
+
s: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Signs a transferWithAuthorization for USDC payment
|
|
19
|
+
*/
|
|
20
|
+
export declare function signTransferAuthorization(wallet: Wallet, to: string, value: bigint, validityDuration?: number, // 1 hour default
|
|
21
|
+
network?: 'sepolia' | 'mainnet'): Promise<TransferAuthorization>;
|
|
22
|
+
/**
|
|
23
|
+
* Verifies a transferWithAuthorization hasn't been used
|
|
24
|
+
*/
|
|
25
|
+
export declare function verifyAuthorizationNotUsed(from: string, nonce: string, network?: 'sepolia' | 'mainnet'): Promise<boolean>;
|
|
26
|
+
/**
|
|
27
|
+
* Executes a transferWithAuthorization
|
|
28
|
+
*/
|
|
29
|
+
export declare function executeTransferAuthorization(auth: TransferAuthorization, executor: Wallet, network?: 'sepolia' | 'mainnet'): Promise<string>;
|
|
30
|
+
//# sourceMappingURL=x402.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402.d.ts","sourceRoot":"","sources":["../../src/services/x402.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAA0E,MAAM,QAAQ,CAAC;AAsBxG,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,gBAAgB,GAAE,MAAa,EAAE,iBAAiB;AAClD,OAAO,GAAE,SAAS,GAAG,SAAqB,GACzC,OAAO,CAAC,qBAAqB,CAAC,CAuEhC;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,SAAS,GAAG,SAAqB,GACzC,OAAO,CAAC,OAAO,CAAC,CAOlB;AAED;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,qBAAqB,EAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,SAAS,GAAG,SAAqB,GACzC,OAAO,CAAC,MAAM,CAAC,CAmBjB"}
|