@virtuals-protocol/acp-node-v2 0.0.1

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 (162) hide show
  1. package/README.md +453 -0
  2. package/dist/acpAgent.d.ts +103 -0
  3. package/dist/acpAgent.d.ts.map +1 -0
  4. package/dist/acpAgent.js +423 -0
  5. package/dist/acpAgent.js.map +1 -0
  6. package/dist/acpJob.d.ts +35 -0
  7. package/dist/acpJob.d.ts.map +1 -0
  8. package/dist/acpJob.js +62 -0
  9. package/dist/acpJob.js.map +1 -0
  10. package/dist/clientFactory.d.ts +10 -0
  11. package/dist/clientFactory.d.ts.map +1 -0
  12. package/dist/clientFactory.js +28 -0
  13. package/dist/clientFactory.js.map +1 -0
  14. package/dist/clients/baseAcpClient.d.ts +43 -0
  15. package/dist/clients/baseAcpClient.d.ts.map +1 -0
  16. package/dist/clients/baseAcpClient.js +40 -0
  17. package/dist/clients/baseAcpClient.js.map +1 -0
  18. package/dist/clients/evmAcpClient.d.ts +33 -0
  19. package/dist/clients/evmAcpClient.d.ts.map +1 -0
  20. package/dist/clients/evmAcpClient.js +164 -0
  21. package/dist/clients/evmAcpClient.js.map +1 -0
  22. package/dist/clients/solanaAcpClient.d.ts +29 -0
  23. package/dist/clients/solanaAcpClient.d.ts.map +1 -0
  24. package/dist/clients/solanaAcpClient.js +102 -0
  25. package/dist/clients/solanaAcpClient.js.map +1 -0
  26. package/dist/core/acpAbi.d.ts +944 -0
  27. package/dist/core/acpAbi.d.ts.map +1 -0
  28. package/dist/core/acpAbi.js +750 -0
  29. package/dist/core/acpAbi.js.map +1 -0
  30. package/dist/core/assetToken.d.ts +16 -0
  31. package/dist/core/assetToken.d.ts.map +1 -0
  32. package/dist/core/assetToken.js +50 -0
  33. package/dist/core/assetToken.js.map +1 -0
  34. package/dist/core/chains.d.ts +36 -0
  35. package/dist/core/chains.d.ts.map +1 -0
  36. package/dist/core/chains.js +49 -0
  37. package/dist/core/chains.js.map +1 -0
  38. package/dist/core/constants.d.ts +25 -0
  39. package/dist/core/constants.d.ts.map +1 -0
  40. package/dist/core/constants.js +56 -0
  41. package/dist/core/constants.js.map +1 -0
  42. package/dist/core/fundTransferHookAbi.d.ts +464 -0
  43. package/dist/core/fundTransferHookAbi.d.ts.map +1 -0
  44. package/dist/core/fundTransferHookAbi.js +347 -0
  45. package/dist/core/fundTransferHookAbi.js.map +1 -0
  46. package/dist/core/operations.d.ts +72 -0
  47. package/dist/core/operations.d.ts.map +1 -0
  48. package/dist/core/operations.js +2 -0
  49. package/dist/core/operations.js.map +1 -0
  50. package/dist/events/acpApiClient.d.ts +11 -0
  51. package/dist/events/acpApiClient.d.ts.map +1 -0
  52. package/dist/events/acpApiClient.js +57 -0
  53. package/dist/events/acpApiClient.js.map +1 -0
  54. package/dist/events/acpHttpClient.d.ts +18 -0
  55. package/dist/events/acpHttpClient.d.ts.map +1 -0
  56. package/dist/events/acpHttpClient.js +78 -0
  57. package/dist/events/acpHttpClient.js.map +1 -0
  58. package/dist/events/socketTransport.d.ts +18 -0
  59. package/dist/events/socketTransport.d.ts.map +1 -0
  60. package/dist/events/socketTransport.js +117 -0
  61. package/dist/events/socketTransport.js.map +1 -0
  62. package/dist/events/sseTransport.d.ts +17 -0
  63. package/dist/events/sseTransport.d.ts.map +1 -0
  64. package/dist/events/sseTransport.js +101 -0
  65. package/dist/events/sseTransport.js.map +1 -0
  66. package/dist/events/types.d.ts +197 -0
  67. package/dist/events/types.d.ts.map +1 -0
  68. package/dist/events/types.js +13 -0
  69. package/dist/events/types.js.map +1 -0
  70. package/dist/examples/buyer-fund.d.ts +2 -0
  71. package/dist/examples/buyer-fund.d.ts.map +1 -0
  72. package/dist/examples/buyer-fund.js +51 -0
  73. package/dist/examples/buyer-fund.js.map +1 -0
  74. package/dist/examples/buyer-llm.d.ts +2 -0
  75. package/dist/examples/buyer-llm.d.ts.map +1 -0
  76. package/dist/examples/buyer-llm.js +92 -0
  77. package/dist/examples/buyer-llm.js.map +1 -0
  78. package/dist/examples/buyer.d.ts +2 -0
  79. package/dist/examples/buyer.d.ts.map +1 -0
  80. package/dist/examples/buyer.js +66 -0
  81. package/dist/examples/buyer.js.map +1 -0
  82. package/dist/examples/seller-fund.d.ts +2 -0
  83. package/dist/examples/seller-fund.d.ts.map +1 -0
  84. package/dist/examples/seller-fund.js +48 -0
  85. package/dist/examples/seller-fund.js.map +1 -0
  86. package/dist/examples/seller-llm.d.ts +2 -0
  87. package/dist/examples/seller-llm.d.ts.map +1 -0
  88. package/dist/examples/seller-llm.js +85 -0
  89. package/dist/examples/seller-llm.js.map +1 -0
  90. package/dist/examples/seller.d.ts +2 -0
  91. package/dist/examples/seller.d.ts.map +1 -0
  92. package/dist/examples/seller.js +50 -0
  93. package/dist/examples/seller.js.map +1 -0
  94. package/dist/examples-local/buyer-fund.d.ts +2 -0
  95. package/dist/examples-local/buyer-fund.d.ts.map +1 -0
  96. package/dist/examples-local/buyer-fund.js +69 -0
  97. package/dist/examples-local/buyer-fund.js.map +1 -0
  98. package/dist/examples-local/buyer-llm.d.ts +2 -0
  99. package/dist/examples-local/buyer-llm.d.ts.map +1 -0
  100. package/dist/examples-local/buyer-llm.js +112 -0
  101. package/dist/examples-local/buyer-llm.js.map +1 -0
  102. package/dist/examples-local/buyer-search.d.ts +2 -0
  103. package/dist/examples-local/buyer-search.d.ts.map +1 -0
  104. package/dist/examples-local/buyer-search.js +72 -0
  105. package/dist/examples-local/buyer-search.js.map +1 -0
  106. package/dist/examples-local/buyer.d.ts +2 -0
  107. package/dist/examples-local/buyer.d.ts.map +1 -0
  108. package/dist/examples-local/buyer.js +65 -0
  109. package/dist/examples-local/buyer.js.map +1 -0
  110. package/dist/examples-local/seller-dumb.d.ts +2 -0
  111. package/dist/examples-local/seller-dumb.d.ts.map +1 -0
  112. package/dist/examples-local/seller-dumb.js +42 -0
  113. package/dist/examples-local/seller-dumb.js.map +1 -0
  114. package/dist/examples-local/seller-fund.d.ts +2 -0
  115. package/dist/examples-local/seller-fund.d.ts.map +1 -0
  116. package/dist/examples-local/seller-fund.js +46 -0
  117. package/dist/examples-local/seller-fund.js.map +1 -0
  118. package/dist/examples-local/seller-llm.d.ts +2 -0
  119. package/dist/examples-local/seller-llm.d.ts.map +1 -0
  120. package/dist/examples-local/seller-llm.js +84 -0
  121. package/dist/examples-local/seller-llm.js.map +1 -0
  122. package/dist/examples-local/seller.d.ts +2 -0
  123. package/dist/examples-local/seller.d.ts.map +1 -0
  124. package/dist/examples-local/seller.js +50 -0
  125. package/dist/examples-local/seller.js.map +1 -0
  126. package/dist/index.d.ts +23 -0
  127. package/dist/index.d.ts.map +1 -0
  128. package/dist/index.js +28 -0
  129. package/dist/index.js.map +1 -0
  130. package/dist/jobSession.d.ts +37 -0
  131. package/dist/jobSession.d.ts.map +1 -0
  132. package/dist/jobSession.js +370 -0
  133. package/dist/jobSession.js.map +1 -0
  134. package/dist/providers/evm/alchemyEvmProviderAdapter.d.ts +28 -0
  135. package/dist/providers/evm/alchemyEvmProviderAdapter.d.ts.map +1 -0
  136. package/dist/providers/evm/alchemyEvmProviderAdapter.js +110 -0
  137. package/dist/providers/evm/alchemyEvmProviderAdapter.js.map +1 -0
  138. package/dist/providers/evm/privyAlchemyEvmProviderAdapter.d.ts +32 -0
  139. package/dist/providers/evm/privyAlchemyEvmProviderAdapter.d.ts.map +1 -0
  140. package/dist/providers/evm/privyAlchemyEvmProviderAdapter.js +252 -0
  141. package/dist/providers/evm/privyAlchemyEvmProviderAdapter.js.map +1 -0
  142. package/dist/providers/evm/viemProviderAdapter.d.ts +17 -0
  143. package/dist/providers/evm/viemProviderAdapter.d.ts.map +1 -0
  144. package/dist/providers/evm/viemProviderAdapter.js +37 -0
  145. package/dist/providers/evm/viemProviderAdapter.js.map +1 -0
  146. package/dist/providers/providerAuthClient.d.ts +18 -0
  147. package/dist/providers/providerAuthClient.d.ts.map +1 -0
  148. package/dist/providers/providerAuthClient.js +48 -0
  149. package/dist/providers/providerAuthClient.js.map +1 -0
  150. package/dist/providers/solana/solanaProviderAdapter.d.ts +12 -0
  151. package/dist/providers/solana/solanaProviderAdapter.d.ts.map +1 -0
  152. package/dist/providers/solana/solanaProviderAdapter.js +23 -0
  153. package/dist/providers/solana/solanaProviderAdapter.js.map +1 -0
  154. package/dist/providers/types.d.ts +45 -0
  155. package/dist/providers/types.d.ts.map +1 -0
  156. package/dist/providers/types.js +2 -0
  157. package/dist/providers/types.js.map +1 -0
  158. package/dist/utils/events.d.ts +17 -0
  159. package/dist/utils/events.d.ts.map +1 -0
  160. package/dist/utils/events.js +48 -0
  161. package/dist/utils/events.js.map +1 -0
  162. package/package.json +34 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseAcpClient.d.ts","sourceRoot":"","sources":["../../src/clients/baseAcpClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ export var JobStatus;
2
+ (function (JobStatus) {
3
+ JobStatus[JobStatus["OPEN"] = 0] = "OPEN";
4
+ JobStatus[JobStatus["FUNDED"] = 1] = "FUNDED";
5
+ JobStatus[JobStatus["SUBMITTED"] = 2] = "SUBMITTED";
6
+ JobStatus[JobStatus["COMPLETED"] = 3] = "COMPLETED";
7
+ JobStatus[JobStatus["REJECTED"] = 4] = "REJECTED";
8
+ JobStatus[JobStatus["EXPIRED"] = 5] = "EXPIRED";
9
+ })(JobStatus || (JobStatus = {}));
10
+ export var AgentSort;
11
+ (function (AgentSort) {
12
+ AgentSort["SUCCESSFUL_JOB_COUNT"] = "successfulJobCount";
13
+ AgentSort["SUCCESS_RATE"] = "successRate";
14
+ AgentSort["UNIQUE_BUYER_COUNT"] = "uniqueBuyerCount";
15
+ AgentSort["MINS_FROM_LAST_ONLINE"] = "minsFromLastOnlineTime";
16
+ })(AgentSort || (AgentSort = {}));
17
+ export var OnlineStatus;
18
+ (function (OnlineStatus) {
19
+ OnlineStatus["ALL"] = "all";
20
+ OnlineStatus["ONLINE"] = "online";
21
+ OnlineStatus["OFFLINE"] = "offline";
22
+ })(OnlineStatus || (OnlineStatus = {}));
23
+ export class BaseAcpClient {
24
+ constructor(contractAddresses) {
25
+ this.contractAddresses = contractAddresses;
26
+ }
27
+ getContractAddress(chainId) {
28
+ const addr = this.contractAddresses[chainId];
29
+ if (!addr)
30
+ throw new Error(`No contract address configured for chainId ${chainId}`);
31
+ return addr;
32
+ }
33
+ getContractAddresses() {
34
+ return this.contractAddresses;
35
+ }
36
+ getSupportedChainIds() {
37
+ return Object.keys(this.contractAddresses).map(Number);
38
+ }
39
+ }
40
+ //# sourceMappingURL=baseAcpClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseAcpClient.js","sourceRoot":"","sources":["../../src/clients/baseAcpClient.ts"],"names":[],"mappings":"AAeA,MAAM,CAAN,IAAY,SAOX;AAPD,WAAY,SAAS;IACnB,yCAAQ,CAAA;IACR,6CAAU,CAAA;IACV,mDAAa,CAAA;IACb,mDAAa,CAAA;IACb,iDAAY,CAAA;IACZ,+CAAW,CAAA;AACb,CAAC,EAPW,SAAS,KAAT,SAAS,QAOpB;AAED,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,wDAA2C,CAAA;IAC3C,yCAA4B,CAAA;IAC5B,oDAAuC,CAAA;IACvC,6DAAgD,CAAA;AAClD,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB;AAED,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,2BAAW,CAAA;IACX,iCAAiB,CAAA;IACjB,mCAAmB,CAAA;AACrB,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB;AAED,MAAM,OAAgB,aAAa;IAGjC,YAAY,iBAAyC;QACnD,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAED,kBAAkB,CAAC,OAAe;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI;YACP,MAAM,IAAI,KAAK,CAAC,8CAA8C,OAAO,EAAE,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oBAAoB;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED,oBAAoB;QAClB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzD,CAAC;CA+DF"}
@@ -0,0 +1,33 @@
1
+ import { type Address, type Call } from "viem";
2
+ import { BaseAcpClient } from "./baseAcpClient";
3
+ import type { ApproveAllowanceParams, CapabilityFlags, CompleteParams, CreateJobParams, FundParams, OnChainJob, PreparedEvmTx, PreparedTxInput, RejectParams, SetBudgetParams, SubmitParams } from "../core/operations";
4
+ import type { IEvmProviderAdapter } from "../providers/types";
5
+ import { type JobCreatedFilter } from "../utils/events";
6
+ export declare class EvmAcpClient extends BaseAcpClient<Call[]> {
7
+ private readonly provider;
8
+ private constructor();
9
+ static create(input: {
10
+ contractAddresses: Record<number, string>;
11
+ provider: IEvmProviderAdapter;
12
+ }): Promise<EvmAcpClient>;
13
+ getAddress(): Promise<Address>;
14
+ getProvider(): IEvmProviderAdapter;
15
+ getCapabilities(): CapabilityFlags;
16
+ execute(chainId: number, calls: Call[]): Promise<Address | Address[]>;
17
+ submitPrepared(chainId: number, prepared: PreparedTxInput): Promise<string | string[]>;
18
+ createJob(chainId: number, params: CreateJobParams): Promise<PreparedEvmTx>;
19
+ setBudget(chainId: number, params: SetBudgetParams): Promise<PreparedEvmTx>;
20
+ approveAllowance(chainId: number, params: ApproveAllowanceParams): Promise<PreparedEvmTx>;
21
+ fund(chainId: number, params: FundParams): Promise<PreparedEvmTx>;
22
+ submit(chainId: number, params: SubmitParams): Promise<PreparedEvmTx>;
23
+ complete(chainId: number, params: CompleteParams): Promise<PreparedEvmTx>;
24
+ reject(chainId: number, params: RejectParams): Promise<PreparedEvmTx>;
25
+ getJobIdFromTxHash(chainId: number, txHash: string, filter?: JobCreatedFilter): Promise<bigint | null>;
26
+ getJob(chainId: number, jobId: bigint): Promise<OnChainJob | null>;
27
+ getTokenDecimals(chainId: number, tokenAddress: string): Promise<number>;
28
+ getTokenSymbol(chainId: number, tokenAddress: string): Promise<string>;
29
+ private static toBytes32;
30
+ private buildContractCall;
31
+ private wrap;
32
+ }
33
+ //# sourceMappingURL=evmAcpClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evmAcpClient.d.ts","sourceRoot":"","sources":["../../src/clients/evmAcpClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,OAAO,EACZ,KAAK,IAAI,EAEV,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,eAAe,EACf,UAAU,EACV,UAAU,EACV,aAAa,EACb,eAAe,EACf,YAAY,EACZ,eAAe,EACf,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE/E,qBAAa,YAAa,SAAQ,aAAa,CAAC,IAAI,EAAE,CAAC;IACrD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAE/C,OAAO;WAQM,MAAM,CAAC,KAAK,EAAE;QACzB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,QAAQ,EAAE,mBAAmB,CAAC;KAC/B,GAAG,OAAO,CAAC,YAAY,CAAC;IAIV,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAI7C,WAAW,IAAI,mBAAmB;IAIzB,eAAe,IAAI,eAAe;IAOrC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC;IAI5D,cAAc,CAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;IAed,SAAS,CACtB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,aAAa,CAAC;IAWV,SAAS,CACtB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,aAAa,CAAC;IAWV,gBAAgB,CAC7B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,aAAa,CAAC;IAcV,IAAI,CACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,aAAa,CAAC;IAWV,MAAM,CACnB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,aAAa,CAAC;IAWV,QAAQ,CACrB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,aAAa,CAAC;IAWV,MAAM,CACnB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,aAAa,CAAC;IAWV,kBAAkB,CAC/B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAYV,MAAM,CACnB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IA+Bd,gBAAgB,CAC7B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC;IASH,cAAc,CAC3B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC;IASlB,OAAO,CAAC,MAAM,CAAC,SAAS;IAOxB,OAAO,CAAC,iBAAiB;YAwBX,IAAI;CAQnB"}
@@ -0,0 +1,164 @@
1
+ import { encodeFunctionData, erc20Abi, keccak256, pad, toHex, zeroAddress, } from "viem";
2
+ import { BaseAcpClient } from "./baseAcpClient";
3
+ import { ACP_ABI } from "../core/acpAbi";
4
+ import { parseJobIdFromReceipt } from "../utils/events";
5
+ export class EvmAcpClient extends BaseAcpClient {
6
+ constructor(contractAddresses, provider) {
7
+ super(contractAddresses);
8
+ this.provider = provider;
9
+ }
10
+ static async create(input) {
11
+ return new EvmAcpClient(input.contractAddresses, input.provider);
12
+ }
13
+ async getAddress() {
14
+ return this.provider.getAddress();
15
+ }
16
+ getProvider() {
17
+ return this.provider;
18
+ }
19
+ getCapabilities() {
20
+ return {
21
+ supportsBatch: true,
22
+ supportsAllowance: true,
23
+ };
24
+ }
25
+ async execute(chainId, calls) {
26
+ return this.provider.sendCalls(chainId, calls);
27
+ }
28
+ async submitPrepared(chainId, prepared) {
29
+ const evmCalls = [];
30
+ for (const item of prepared) {
31
+ if (item.chain !== "evm") {
32
+ throw new Error(`Prepared transaction chain mismatch: expected "evm" but received "${item.chain}".`);
33
+ }
34
+ evmCalls.push(...item.tx);
35
+ }
36
+ return this.execute(chainId, evmCalls);
37
+ }
38
+ async createJob(chainId, params) {
39
+ const call = this.buildContractCall(chainId, "createJob", [
40
+ params.providerAddress,
41
+ params.evaluatorAddress,
42
+ BigInt(params.expiredAt),
43
+ params.description,
44
+ (params.hookAddress ?? zeroAddress),
45
+ ]);
46
+ return this.wrap(chainId, call);
47
+ }
48
+ async setBudget(chainId, params) {
49
+ return this.wrap(chainId, this.buildContractCall(chainId, "setBudget", [
50
+ BigInt(params.jobId),
51
+ params.amount,
52
+ params.optParams ?? "0x",
53
+ ]));
54
+ }
55
+ async approveAllowance(chainId, params) {
56
+ const data = encodeFunctionData({
57
+ abi: erc20Abi,
58
+ functionName: "approve",
59
+ args: [params.spenderAddress, params.amount],
60
+ });
61
+ return this.wrap(chainId, {
62
+ to: params.tokenAddress,
63
+ data,
64
+ value: 0n,
65
+ });
66
+ }
67
+ async fund(chainId, params) {
68
+ return this.wrap(chainId, this.buildContractCall(chainId, "fund", [
69
+ BigInt(params.jobId),
70
+ params.expectedBudget,
71
+ params.optParams ?? "0x",
72
+ ]));
73
+ }
74
+ async submit(chainId, params) {
75
+ return this.wrap(chainId, this.buildContractCall(chainId, "submit", [
76
+ BigInt(params.jobId),
77
+ keccak256(toHex(params.deliverable)),
78
+ params.optParams ?? "0x",
79
+ ]));
80
+ }
81
+ async complete(chainId, params) {
82
+ return this.wrap(chainId, this.buildContractCall(chainId, "complete", [
83
+ BigInt(params.jobId),
84
+ EvmAcpClient.toBytes32(params.reason),
85
+ params.optParams ?? "0x",
86
+ ]));
87
+ }
88
+ async reject(chainId, params) {
89
+ return this.wrap(chainId, this.buildContractCall(chainId, "reject", [
90
+ BigInt(params.jobId),
91
+ EvmAcpClient.toBytes32(params.reason),
92
+ params.optParams ?? "0x",
93
+ ]));
94
+ }
95
+ async getJobIdFromTxHash(chainId, txHash, filter) {
96
+ const receipt = await this.provider.getTransactionReceipt(chainId, txHash);
97
+ return parseJobIdFromReceipt(receipt, this.getContractAddress(chainId), filter);
98
+ }
99
+ async getJob(chainId, jobId) {
100
+ const result = await this.provider.readContract(chainId, {
101
+ address: this.getContractAddress(chainId),
102
+ abi: ACP_ABI,
103
+ functionName: "getJob",
104
+ args: [jobId],
105
+ });
106
+ const raw = result;
107
+ return {
108
+ id: jobId,
109
+ client: raw.client,
110
+ provider: raw.provider,
111
+ evaluator: raw.evaluator,
112
+ description: raw.description,
113
+ budget: raw.budget,
114
+ expiredAt: raw.expiredAt,
115
+ status: raw.status,
116
+ hook: raw.hook,
117
+ };
118
+ }
119
+ async getTokenDecimals(chainId, tokenAddress) {
120
+ const result = await this.provider.readContract(chainId, {
121
+ address: tokenAddress,
122
+ abi: erc20Abi,
123
+ functionName: "decimals",
124
+ });
125
+ return Number(result);
126
+ }
127
+ async getTokenSymbol(chainId, tokenAddress) {
128
+ const result = await this.provider.readContract(chainId, {
129
+ address: tokenAddress,
130
+ abi: erc20Abi,
131
+ functionName: "symbol",
132
+ });
133
+ return result;
134
+ }
135
+ static toBytes32(value) {
136
+ if (value.startsWith("0x") && value.length === 66)
137
+ return value;
138
+ const hex = toHex(value);
139
+ if (hex.length <= 66)
140
+ return pad(hex, { size: 32, dir: "right" });
141
+ return keccak256(hex);
142
+ }
143
+ buildContractCall(chainId, functionName, args) {
144
+ const data = encodeFunctionData({
145
+ abi: ACP_ABI,
146
+ functionName,
147
+ args: args,
148
+ });
149
+ return {
150
+ to: this.getContractAddress(chainId),
151
+ data,
152
+ value: 0n,
153
+ };
154
+ }
155
+ async wrap(chainId, call) {
156
+ const context = await this.provider.getNetworkContext(chainId);
157
+ return {
158
+ tx: [call],
159
+ chain: "evm",
160
+ network: context.network,
161
+ };
162
+ }
163
+ }
164
+ //# sourceMappingURL=evmAcpClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evmAcpClient.js","sourceRoot":"","sources":["../../src/clients/evmAcpClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { BaseAcpClient } from "./baseAcpClient";
2
+ import type { ApproveAllowanceParams, CapabilityFlags, CompleteParams, CreateJobParams, FundParams, OnChainJob, PreparedSolanaTx, PreparedTxInput, RejectParams, SetBudgetParams, SubmitParams } from "../core/operations";
3
+ import type { ISolanaProviderAdapter, SolanaInstructionLike } from "../providers/types";
4
+ export declare class SolanaAcpClient extends BaseAcpClient<SolanaInstructionLike[]> {
5
+ private readonly provider;
6
+ private constructor();
7
+ static create(input: {
8
+ contractAddresses: Record<number, string>;
9
+ provider: ISolanaProviderAdapter;
10
+ }): Promise<SolanaAcpClient>;
11
+ getAddress(): Promise<string>;
12
+ getCapabilities(): CapabilityFlags;
13
+ execute(instructions: SolanaInstructionLike[]): Promise<string | string[]>;
14
+ submitPrepared(_chainId: number, prepared: PreparedTxInput): Promise<string | string[]>;
15
+ createJob(chainId: number, params: CreateJobParams): Promise<PreparedSolanaTx>;
16
+ setBudget(chainId: number, params: SetBudgetParams): Promise<PreparedSolanaTx>;
17
+ approveAllowance(_chainId: number, _params: ApproveAllowanceParams): Promise<PreparedSolanaTx>;
18
+ fund(chainId: number, params: FundParams): Promise<PreparedSolanaTx>;
19
+ submit(chainId: number, params: SubmitParams): Promise<PreparedSolanaTx>;
20
+ complete(chainId: number, params: CompleteParams): Promise<PreparedSolanaTx>;
21
+ reject(chainId: number, params: RejectParams): Promise<PreparedSolanaTx>;
22
+ getJobIdFromTxHash(_chainId: number): Promise<bigint | null>;
23
+ getJob(_chainId: number, _jobId: bigint): Promise<OnChainJob | null>;
24
+ getTokenDecimals(_chainId: number, _tokenAddress: string): Promise<number>;
25
+ getTokenSymbol(_chainId: number, _tokenAddress: string): Promise<string>;
26
+ private makeIx;
27
+ private wrap;
28
+ }
29
+ //# sourceMappingURL=solanaAcpClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solanaAcpClient.d.ts","sourceRoot":"","sources":["../../src/clients/solanaAcpClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,eAAe,EACf,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,oBAAoB,CAAC;AAG5B,qBAAa,eAAgB,SAAQ,aAAa,CAAC,qBAAqB,EAAE,CAAC;IACzE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAElD,OAAO;WAQM,MAAM,CAAC,KAAK,EAAE;QACzB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,QAAQ,EAAE,sBAAsB,CAAC;KAClC,GAAG,OAAO,CAAC,eAAe,CAAC;IAIb,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC,eAAe,IAAI,eAAe;IAOrC,OAAO,CACX,YAAY,EAAE,qBAAqB,EAAE,GACpC,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;IAId,cAAc,CAC3B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;IAed,SAAS,CACtB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,gBAAgB,CAAC;IAab,SAAS,CACtB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,gBAAgB,CAAC;IAUb,gBAAgB,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IAMb,IAAI,CACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,gBAAgB,CAAC;IASb,MAAM,CACnB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,gBAAgB,CAAC;IAUb,QAAQ,CACrB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,gBAAgB,CAAC;IAUb,MAAM,CACnB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,gBAAgB,CAAC;IAUb,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAM5D,MAAM,CACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAId,gBAAgB,CAC7B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC;IAMH,cAAc,CAC3B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC;IAMlB,OAAO,CAAC,MAAM;YAYA,IAAI;CAWnB"}
@@ -0,0 +1,102 @@
1
+ import { keccak256, toHex } from "viem";
2
+ import { BaseAcpClient } from "./baseAcpClient";
3
+ export class SolanaAcpClient extends BaseAcpClient {
4
+ constructor(contractAddresses, provider) {
5
+ super(contractAddresses);
6
+ this.provider = provider;
7
+ }
8
+ static async create(input) {
9
+ return new SolanaAcpClient(input.contractAddresses, input.provider);
10
+ }
11
+ async getAddress() {
12
+ return this.provider.getAddress();
13
+ }
14
+ getCapabilities() {
15
+ return {
16
+ supportsBatch: true,
17
+ supportsAllowance: false,
18
+ };
19
+ }
20
+ async execute(instructions) {
21
+ return this.provider.sendInstructions(instructions);
22
+ }
23
+ async submitPrepared(_chainId, prepared) {
24
+ const instructions = [];
25
+ for (const item of prepared) {
26
+ if (item.chain !== "solana") {
27
+ throw new Error(`Prepared transaction chain mismatch: expected "solana" but received "${item.chain}".`);
28
+ }
29
+ instructions.push(...item.tx);
30
+ }
31
+ return this.execute(instructions);
32
+ }
33
+ async createJob(chainId, params) {
34
+ return this.wrap(chainId, this.makeIx(chainId, "createJob", {
35
+ providerAddress: params.providerAddress,
36
+ evaluatorAddress: params.evaluatorAddress,
37
+ expiredAt: params.expiredAt,
38
+ description: params.description,
39
+ hookAddress: params.hookAddress,
40
+ }));
41
+ }
42
+ async setBudget(chainId, params) {
43
+ return this.wrap(chainId, this.makeIx(chainId, "setBudget", {
44
+ jobId: params.jobId,
45
+ amount: params.amount.toString(),
46
+ }));
47
+ }
48
+ async approveAllowance(_chainId, _params) {
49
+ throw new Error("approveAllowance is not supported by SolanaAcpClient. Check capability flags first.");
50
+ }
51
+ async fund(chainId, params) {
52
+ return this.wrap(chainId, this.makeIx(chainId, "fund", {
53
+ jobId: params.jobId,
54
+ }));
55
+ }
56
+ async submit(chainId, params) {
57
+ return this.wrap(chainId, this.makeIx(chainId, "submit", {
58
+ jobId: params.jobId,
59
+ deliverable: keccak256(toHex(params.deliverable)),
60
+ }));
61
+ }
62
+ async complete(chainId, params) {
63
+ return this.wrap(chainId, this.makeIx(chainId, "complete", {
64
+ jobId: params.jobId,
65
+ reason: params.reason,
66
+ }));
67
+ }
68
+ async reject(chainId, params) {
69
+ return this.wrap(chainId, this.makeIx(chainId, "reject", {
70
+ jobId: params.jobId,
71
+ reason: params.reason,
72
+ }));
73
+ }
74
+ async getJobIdFromTxHash(_chainId) {
75
+ throw new Error("getJobIdFromTxHash is not implemented for SolanaAcpClient.");
76
+ }
77
+ async getJob(_chainId, _jobId) {
78
+ throw new Error("getJob is not implemented for SolanaAcpClient.");
79
+ }
80
+ async getTokenDecimals(_chainId, _tokenAddress) {
81
+ throw new Error("getTokenDecimals is only supported on EVM. Use Erc20Token.create with explicit decimals for Solana.");
82
+ }
83
+ async getTokenSymbol(_chainId, _tokenAddress) {
84
+ throw new Error("getTokenSymbol is only supported on EVM. Use Erc20Token.create with explicit symbol for Solana.");
85
+ }
86
+ makeIx(chainId, method, payload) {
87
+ return {
88
+ programId: this.getContractAddress(chainId),
89
+ keys: [],
90
+ data: JSON.stringify({ method, payload }),
91
+ };
92
+ }
93
+ async wrap(chainId, instruction) {
94
+ const context = await this.provider.getNetworkContext(chainId);
95
+ return {
96
+ tx: [instruction],
97
+ chain: "solana",
98
+ network: context.network,
99
+ };
100
+ }
101
+ }
102
+ //# sourceMappingURL=solanaAcpClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solanaAcpClient.js","sourceRoot":"","sources":["../../src/clients/solanaAcpClient.ts"],"names":[],"mappings":"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"}