@paysponge/sdk 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/LICENSE +21 -0
- package/README.md +138 -0
- package/dist/admin.d.ts +81 -0
- package/dist/admin.d.ts.map +1 -0
- package/dist/admin.js +108 -0
- package/dist/admin.js.map +1 -0
- package/dist/api/agents.d.ts +37 -0
- package/dist/api/agents.d.ts.map +1 -0
- package/dist/api/agents.js +63 -0
- package/dist/api/agents.js.map +1 -0
- package/dist/api/http.d.ts +29 -0
- package/dist/api/http.d.ts.map +1 -0
- package/dist/api/http.js +101 -0
- package/dist/api/http.js.map +1 -0
- package/dist/api/index.d.ts +6 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +6 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/public-tools.d.ts +52 -0
- package/dist/api/public-tools.d.ts.map +1 -0
- package/dist/api/public-tools.js +68 -0
- package/dist/api/public-tools.js.map +1 -0
- package/dist/api/transactions.d.ts +30 -0
- package/dist/api/transactions.d.ts.map +1 -0
- package/dist/api/transactions.js +176 -0
- package/dist/api/transactions.js.map +1 -0
- package/dist/api/wallets.d.ts +33 -0
- package/dist/api/wallets.d.ts.map +1 -0
- package/dist/api/wallets.js +121 -0
- package/dist/api/wallets.js.map +1 -0
- package/dist/auth/credentials.d.ts +37 -0
- package/dist/auth/credentials.d.ts.map +1 -0
- package/dist/auth/credentials.js +100 -0
- package/dist/auth/credentials.js.map +1 -0
- package/dist/auth/device-flow.d.ts +25 -0
- package/dist/auth/device-flow.d.ts.map +1 -0
- package/dist/auth/device-flow.js +161 -0
- package/dist/auth/device-flow.js.map +1 -0
- package/dist/auth/index.d.ts +3 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +3 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/bin/cli.d.ts +3 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +116 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/client.d.ts +383 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +384 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/config.d.ts +27 -0
- package/dist/mcp/config.d.ts.map +1 -0
- package/dist/mcp/config.js +34 -0
- package/dist/mcp/config.js.map +1 -0
- package/dist/mcp/index.d.ts +2 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +2 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/tools/definitions.d.ts +16 -0
- package/dist/tools/definitions.d.ts.map +1 -0
- package/dist/tools/definitions.js +330 -0
- package/dist/tools/definitions.js.map +1 -0
- package/dist/tools/executor.d.ts +56 -0
- package/dist/tools/executor.d.ts.map +1 -0
- package/dist/tools/executor.js +182 -0
- package/dist/tools/executor.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +3 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/schemas.d.ts +924 -0
- package/dist/types/schemas.d.ts.map +1 -0
- package/dist/types/schemas.js +360 -0
- package/dist/types/schemas.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { type Chain, type EvmTransferOptions, type SolanaTransferOptions, type SubmitTransaction, type DetailedBalances, type SolanaTokensResponse, type SolanaTokenSearchResponse, type FundingRequestResponse, type WithdrawToMainWalletResponse, type TransactionHistoryDetailed, type SpongeResponse, type X402PaymentResponse, type SolanaChain } from "../types/schemas.js";
|
|
2
|
+
import type { HttpClient } from "./http.js";
|
|
3
|
+
export interface DetailedBalanceOptions {
|
|
4
|
+
chain?: Chain | "all";
|
|
5
|
+
allowedChains?: Chain[];
|
|
6
|
+
onlyUsdc?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface TransactionHistoryDetailedOptions {
|
|
9
|
+
limit?: number;
|
|
10
|
+
chain?: Chain;
|
|
11
|
+
}
|
|
12
|
+
export interface FundingRequestOptions {
|
|
13
|
+
amount: string;
|
|
14
|
+
reason?: string;
|
|
15
|
+
chain?: Chain;
|
|
16
|
+
currency?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface WithdrawToMainWalletOptions {
|
|
19
|
+
chain: Chain;
|
|
20
|
+
amount: string;
|
|
21
|
+
currency?: "native" | "USDC";
|
|
22
|
+
}
|
|
23
|
+
export interface SpongeRequest {
|
|
24
|
+
[key: string]: unknown;
|
|
25
|
+
}
|
|
26
|
+
export interface CreateX402PaymentOptions {
|
|
27
|
+
chain: Chain;
|
|
28
|
+
to: string;
|
|
29
|
+
token?: string;
|
|
30
|
+
amount: string;
|
|
31
|
+
decimals?: number;
|
|
32
|
+
valid_for_seconds?: number;
|
|
33
|
+
resource_url?: string;
|
|
34
|
+
resource_description?: string;
|
|
35
|
+
fee_payer?: string;
|
|
36
|
+
http_method?: "GET" | "POST";
|
|
37
|
+
}
|
|
38
|
+
export declare class PublicToolsApi {
|
|
39
|
+
private readonly http;
|
|
40
|
+
constructor(http: HttpClient);
|
|
41
|
+
getDetailedBalances(options?: DetailedBalanceOptions): Promise<DetailedBalances>;
|
|
42
|
+
evmTransfer(options: EvmTransferOptions): Promise<SubmitTransaction>;
|
|
43
|
+
solanaTransfer(options: SolanaTransferOptions): Promise<SubmitTransaction>;
|
|
44
|
+
getSolanaTokens(chain: SolanaChain): Promise<SolanaTokensResponse>;
|
|
45
|
+
searchSolanaTokens(query: string, limit?: number): Promise<SolanaTokenSearchResponse>;
|
|
46
|
+
getTransactionHistoryDetailed(options?: TransactionHistoryDetailedOptions): Promise<TransactionHistoryDetailed>;
|
|
47
|
+
requestFunding(options: FundingRequestOptions): Promise<FundingRequestResponse>;
|
|
48
|
+
withdrawToMainWallet(options: WithdrawToMainWalletOptions): Promise<WithdrawToMainWalletResponse>;
|
|
49
|
+
sponge(request: SpongeRequest): Promise<SpongeResponse>;
|
|
50
|
+
createX402Payment(options: CreateX402PaymentOptions): Promise<X402PaymentResponse>;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=public-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-tools.d.ts","sourceRoot":"","sources":["../../src/api/public-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAYL,KAAK,KAAK,EACV,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACtB,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iCAAiC;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,KAAK,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC9B;AAED,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEvC,mBAAmB,CAAC,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgBpF,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAMpE,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAM1E,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAKlE,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAOrF,6BAA6B,CACjC,OAAO,GAAE,iCAAsC,GAC9C,OAAO,CAAC,0BAA0B,CAAC;IAQhC,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAK/E,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAKjG,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAKvD,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAIzF"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { DetailedBalancesSchema, EvmTransferOptionsSchema, SolanaTransferOptionsSchema, SubmitTransactionSchema, SolanaTokensResponseSchema, SolanaTokenSearchResponseSchema, FundingRequestResponseSchema, WithdrawToMainWalletResponseSchema, TransactionHistoryDetailedSchema, SpongeResponseSchema, X402PaymentResponseSchema, } from "../types/schemas.js";
|
|
2
|
+
export class PublicToolsApi {
|
|
3
|
+
http;
|
|
4
|
+
constructor(http) {
|
|
5
|
+
this.http = http;
|
|
6
|
+
}
|
|
7
|
+
async getDetailedBalances(options = {}) {
|
|
8
|
+
const params = {};
|
|
9
|
+
if (options.chain) {
|
|
10
|
+
params.chain = options.chain;
|
|
11
|
+
}
|
|
12
|
+
if (options.allowedChains?.length) {
|
|
13
|
+
params.allowedChains = options.allowedChains.join(",");
|
|
14
|
+
}
|
|
15
|
+
if (options.onlyUsdc) {
|
|
16
|
+
params.onlyUsdc = "true";
|
|
17
|
+
}
|
|
18
|
+
const response = await this.http.get("/api/balances", params);
|
|
19
|
+
return DetailedBalancesSchema.parse(response);
|
|
20
|
+
}
|
|
21
|
+
async evmTransfer(options) {
|
|
22
|
+
const validated = EvmTransferOptionsSchema.parse(options);
|
|
23
|
+
const response = await this.http.post("/api/transfers/evm", validated);
|
|
24
|
+
return SubmitTransactionSchema.parse(response);
|
|
25
|
+
}
|
|
26
|
+
async solanaTransfer(options) {
|
|
27
|
+
const validated = SolanaTransferOptionsSchema.parse(options);
|
|
28
|
+
const response = await this.http.post("/api/transfers/solana", validated);
|
|
29
|
+
return SubmitTransactionSchema.parse(response);
|
|
30
|
+
}
|
|
31
|
+
async getSolanaTokens(chain) {
|
|
32
|
+
const response = await this.http.get("/api/solana/tokens", { chain });
|
|
33
|
+
return SolanaTokensResponseSchema.parse(response);
|
|
34
|
+
}
|
|
35
|
+
async searchSolanaTokens(query, limit) {
|
|
36
|
+
const params = { query };
|
|
37
|
+
if (limit !== undefined)
|
|
38
|
+
params.limit = limit.toString();
|
|
39
|
+
const response = await this.http.get("/api/solana/tokens/search", params);
|
|
40
|
+
return SolanaTokenSearchResponseSchema.parse(response);
|
|
41
|
+
}
|
|
42
|
+
async getTransactionHistoryDetailed(options = {}) {
|
|
43
|
+
const params = {};
|
|
44
|
+
if (options.limit !== undefined)
|
|
45
|
+
params.limit = options.limit.toString();
|
|
46
|
+
if (options.chain)
|
|
47
|
+
params.chain = options.chain;
|
|
48
|
+
const response = await this.http.get("/api/transactions/history", params);
|
|
49
|
+
return TransactionHistoryDetailedSchema.parse(response);
|
|
50
|
+
}
|
|
51
|
+
async requestFunding(options) {
|
|
52
|
+
const response = await this.http.post("/api/funding-requests", options);
|
|
53
|
+
return FundingRequestResponseSchema.parse(response);
|
|
54
|
+
}
|
|
55
|
+
async withdrawToMainWallet(options) {
|
|
56
|
+
const response = await this.http.post("/api/wallets/withdraw-to-main", options);
|
|
57
|
+
return WithdrawToMainWalletResponseSchema.parse(response);
|
|
58
|
+
}
|
|
59
|
+
async sponge(request) {
|
|
60
|
+
const response = await this.http.post("/api/sponge", request);
|
|
61
|
+
return SpongeResponseSchema.parse(response);
|
|
62
|
+
}
|
|
63
|
+
async createX402Payment(options) {
|
|
64
|
+
const response = await this.http.post("/api/x402/payments", options);
|
|
65
|
+
return X402PaymentResponseSchema.parse(response);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=public-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-tools.js","sourceRoot":"","sources":["../../src/api/public-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type TransactionResult, type TransactionStatus, type TransferOptions, type SwapOptions, type Chain } from "../types/schemas.js";
|
|
2
|
+
import type { HttpClient } from "./http.js";
|
|
3
|
+
export declare class TransactionsApi {
|
|
4
|
+
private readonly http;
|
|
5
|
+
private readonly agentId;
|
|
6
|
+
constructor(http: HttpClient, agentId: string);
|
|
7
|
+
/**
|
|
8
|
+
* Transfer tokens (EVM or Solana)
|
|
9
|
+
* Uses the /api/transactions/transfer endpoint
|
|
10
|
+
*/
|
|
11
|
+
transfer(options: TransferOptions): Promise<TransactionResult>;
|
|
12
|
+
/**
|
|
13
|
+
* Swap tokens (Solana via Jupiter)
|
|
14
|
+
* Uses the /api/transactions/swap endpoint
|
|
15
|
+
*/
|
|
16
|
+
swap(options: SwapOptions): Promise<TransactionResult>;
|
|
17
|
+
/**
|
|
18
|
+
* Get transaction status
|
|
19
|
+
* Uses the /api/transactions/status/:txHash endpoint
|
|
20
|
+
*/
|
|
21
|
+
getStatus(txHash: string, chain: Chain): Promise<TransactionStatus>;
|
|
22
|
+
/**
|
|
23
|
+
* Get transaction history
|
|
24
|
+
*/
|
|
25
|
+
getHistory(options?: {
|
|
26
|
+
limit?: number;
|
|
27
|
+
offset?: number;
|
|
28
|
+
}): Promise<TransactionStatus[]>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=transactions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../../src/api/transactions.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,KAAK,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AA2C5C,qBAAa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM;IAGlC;;;OAGG;IACG,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA2EpE;;;OAGG;IACG,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAoB5D;;;OAGG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAqBzE;;OAEG;IACG,UAAU,CACd,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GACA,OAAO,CAAC,iBAAiB,EAAE,CAAC;CAsBhC"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { TransactionResultSchema, TransactionStatusSchema, TransferOptionsSchema, SwapOptionsSchema, SubmitTransactionSchema, CHAIN_IDS, } from "../types/schemas.js";
|
|
3
|
+
// Swap response from API
|
|
4
|
+
const SwapResponseSchema = z.object({
|
|
5
|
+
signature: z.string(),
|
|
6
|
+
inputToken: z.string(),
|
|
7
|
+
outputToken: z.string(),
|
|
8
|
+
inputAmount: z.string(),
|
|
9
|
+
outputAmount: z.string(),
|
|
10
|
+
explorerUrl: z.string().optional(),
|
|
11
|
+
});
|
|
12
|
+
// Transaction status response from API
|
|
13
|
+
const TransactionStatusResponseSchema = z.object({
|
|
14
|
+
transactionHash: z.string(),
|
|
15
|
+
status: z.enum(["pending", "confirmed", "failed"]),
|
|
16
|
+
confirmations: z.number().nullable(),
|
|
17
|
+
blockNumber: z.number().nullable(),
|
|
18
|
+
gasUsed: z.string().nullable(),
|
|
19
|
+
effectiveGasPrice: z.string().nullable(),
|
|
20
|
+
});
|
|
21
|
+
// Transaction history response from API
|
|
22
|
+
const TransactionHistoryResponseSchema = z.object({
|
|
23
|
+
items: z.array(z.object({
|
|
24
|
+
id: z.string(),
|
|
25
|
+
txHash: z.string().nullable(),
|
|
26
|
+
txStatus: z.string(),
|
|
27
|
+
fromAddress: z.string(),
|
|
28
|
+
toAddress: z.string(),
|
|
29
|
+
value: z.string(),
|
|
30
|
+
chainId: z.number(),
|
|
31
|
+
txType: z.string(),
|
|
32
|
+
createdAt: z.coerce.date(),
|
|
33
|
+
})),
|
|
34
|
+
total: z.number(),
|
|
35
|
+
page: z.number(),
|
|
36
|
+
perPage: z.number(),
|
|
37
|
+
totalPages: z.number(),
|
|
38
|
+
});
|
|
39
|
+
export class TransactionsApi {
|
|
40
|
+
http;
|
|
41
|
+
agentId;
|
|
42
|
+
constructor(http, agentId) {
|
|
43
|
+
this.http = http;
|
|
44
|
+
this.agentId = agentId;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Transfer tokens (EVM or Solana)
|
|
48
|
+
* Uses the /api/transactions/transfer endpoint
|
|
49
|
+
*/
|
|
50
|
+
async transfer(options) {
|
|
51
|
+
const validated = TransferOptionsSchema.parse(options);
|
|
52
|
+
const chainId = CHAIN_IDS[validated.chain];
|
|
53
|
+
if (chainId === undefined) {
|
|
54
|
+
throw new Error(`Unknown chain: ${validated.chain}`);
|
|
55
|
+
}
|
|
56
|
+
// Solana transfers
|
|
57
|
+
if (validated.chain === "solana" || validated.chain === "solana-devnet") {
|
|
58
|
+
if (validated.currency !== "SOL" && validated.currency !== "USDC") {
|
|
59
|
+
throw new Error(`Currency ${validated.currency} not supported on ${validated.chain}`);
|
|
60
|
+
}
|
|
61
|
+
const response = await this.http.post("/api/transfers/solana", {
|
|
62
|
+
chain: validated.chain,
|
|
63
|
+
to: validated.to,
|
|
64
|
+
amount: validated.amount,
|
|
65
|
+
currency: validated.currency,
|
|
66
|
+
});
|
|
67
|
+
const parsed = SubmitTransactionSchema.parse(response);
|
|
68
|
+
const status = parsed.status === "pending" || parsed.status === "submitted" ? "pending" : "confirmed";
|
|
69
|
+
return TransactionResultSchema.parse({
|
|
70
|
+
txHash: parsed.transactionHash,
|
|
71
|
+
status,
|
|
72
|
+
explorerUrl: parsed.explorerUrl,
|
|
73
|
+
chainId,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
// Tempo pathUSD transfers
|
|
77
|
+
if (validated.chain === "tempo" || validated.currency === "pathUSD") {
|
|
78
|
+
if (validated.chain !== "tempo" || validated.currency !== "pathUSD") {
|
|
79
|
+
throw new Error("pathUSD transfers are only supported on the tempo chain");
|
|
80
|
+
}
|
|
81
|
+
const response = await this.http.post("/api/transfers/tempo", {
|
|
82
|
+
to: validated.to,
|
|
83
|
+
amount: validated.amount,
|
|
84
|
+
use_gas_sponsorship: true,
|
|
85
|
+
});
|
|
86
|
+
const parsed = SubmitTransactionSchema.parse(response);
|
|
87
|
+
const status = parsed.status === "pending" || parsed.status === "submitted" ? "pending" : "confirmed";
|
|
88
|
+
return TransactionResultSchema.parse({
|
|
89
|
+
txHash: parsed.transactionHash,
|
|
90
|
+
status,
|
|
91
|
+
explorerUrl: parsed.explorerUrl,
|
|
92
|
+
chainId,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
// EVM transfers
|
|
96
|
+
if (validated.currency !== "ETH" && validated.currency !== "USDC") {
|
|
97
|
+
throw new Error(`Currency ${validated.currency} not supported on ${validated.chain}`);
|
|
98
|
+
}
|
|
99
|
+
const response = await this.http.post("/api/transfers/evm", {
|
|
100
|
+
chain: validated.chain,
|
|
101
|
+
to: validated.to,
|
|
102
|
+
amount: validated.amount,
|
|
103
|
+
currency: validated.currency,
|
|
104
|
+
});
|
|
105
|
+
const parsed = SubmitTransactionSchema.parse(response);
|
|
106
|
+
const status = parsed.status === "pending" || parsed.status === "submitted" ? "pending" : "confirmed";
|
|
107
|
+
return TransactionResultSchema.parse({
|
|
108
|
+
txHash: parsed.transactionHash,
|
|
109
|
+
status,
|
|
110
|
+
explorerUrl: parsed.explorerUrl,
|
|
111
|
+
chainId,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Swap tokens (Solana via Jupiter)
|
|
116
|
+
* Uses the /api/transactions/swap endpoint
|
|
117
|
+
*/
|
|
118
|
+
async swap(options) {
|
|
119
|
+
const validated = SwapOptionsSchema.parse(options);
|
|
120
|
+
const response = await this.http.post("/api/transactions/swap", {
|
|
121
|
+
chain: validated.chain,
|
|
122
|
+
inputToken: validated.from,
|
|
123
|
+
outputToken: validated.to,
|
|
124
|
+
amount: validated.amount,
|
|
125
|
+
slippageBps: validated.slippageBps,
|
|
126
|
+
});
|
|
127
|
+
const parsed = SwapResponseSchema.parse(response);
|
|
128
|
+
return TransactionResultSchema.parse({
|
|
129
|
+
txHash: parsed.signature,
|
|
130
|
+
status: "confirmed",
|
|
131
|
+
explorerUrl: parsed.explorerUrl,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Get transaction status
|
|
136
|
+
* Uses the /api/transactions/status/:txHash endpoint
|
|
137
|
+
*/
|
|
138
|
+
async getStatus(txHash, chain) {
|
|
139
|
+
const params = {
|
|
140
|
+
chain,
|
|
141
|
+
};
|
|
142
|
+
const response = await this.http.get(`/api/transactions/status/${txHash}`, params);
|
|
143
|
+
const parsed = TransactionStatusResponseSchema.parse(response);
|
|
144
|
+
return TransactionStatusSchema.parse({
|
|
145
|
+
txHash: parsed.transactionHash,
|
|
146
|
+
status: parsed.status,
|
|
147
|
+
blockNumber: parsed.blockNumber,
|
|
148
|
+
confirmations: parsed.confirmations,
|
|
149
|
+
errorMessage: null,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Get transaction history
|
|
154
|
+
*/
|
|
155
|
+
async getHistory(options) {
|
|
156
|
+
const params = {
|
|
157
|
+
agentId: this.agentId,
|
|
158
|
+
};
|
|
159
|
+
if (options?.limit !== undefined) {
|
|
160
|
+
params.limit = options.limit.toString();
|
|
161
|
+
}
|
|
162
|
+
if (options?.offset !== undefined) {
|
|
163
|
+
params.offset = options.offset.toString();
|
|
164
|
+
}
|
|
165
|
+
const response = await this.http.get("/api/transactions", params);
|
|
166
|
+
const parsed = TransactionHistoryResponseSchema.parse(response);
|
|
167
|
+
return parsed.items.map((tx) => ({
|
|
168
|
+
txHash: tx.txHash ?? "",
|
|
169
|
+
status: tx.txStatus,
|
|
170
|
+
blockNumber: null,
|
|
171
|
+
confirmations: null,
|
|
172
|
+
errorMessage: null,
|
|
173
|
+
}));
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=transactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactions.js","sourceRoot":"","sources":["../../src/api/transactions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type Wallet, type Chain, type Balance } from "../types/schemas.js";
|
|
2
|
+
import type { HttpClient } from "./http.js";
|
|
3
|
+
export declare class WalletsApi {
|
|
4
|
+
private readonly http;
|
|
5
|
+
constructor(http: HttpClient);
|
|
6
|
+
/**
|
|
7
|
+
* List all wallets for an agent
|
|
8
|
+
*/
|
|
9
|
+
list(agentId: string, options?: {
|
|
10
|
+
includeBalances?: boolean;
|
|
11
|
+
}): Promise<Wallet[]>;
|
|
12
|
+
/**
|
|
13
|
+
* Get a specific wallet by ID
|
|
14
|
+
*/
|
|
15
|
+
get(walletId: string): Promise<Wallet>;
|
|
16
|
+
/**
|
|
17
|
+
* Get wallet balance
|
|
18
|
+
*/
|
|
19
|
+
getBalance(walletId: string, chainId?: number): Promise<Balance>;
|
|
20
|
+
/**
|
|
21
|
+
* Get balances for all wallets of an agent
|
|
22
|
+
*/
|
|
23
|
+
getAllBalances(agentId: string): Promise<Record<Chain, Balance>>;
|
|
24
|
+
/**
|
|
25
|
+
* Get wallet address for a specific chain
|
|
26
|
+
*/
|
|
27
|
+
getAddress(agentId: string, chain: Chain): Promise<string | null>;
|
|
28
|
+
/**
|
|
29
|
+
* Get all wallet addresses for an agent
|
|
30
|
+
*/
|
|
31
|
+
getAllAddresses(agentId: string): Promise<Record<Chain, string>>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=wallets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallets.d.ts","sourceRoot":"","sources":["../../src/api/wallets.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,MAAM,EACX,KAAK,KAAK,EACV,KAAK,OAAO,EACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAyB5C,qBAAa,UAAU;IACT,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C;;OAEG;IACG,IAAI,CACR,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GACtC,OAAO,CAAC,MAAM,EAAE,CAAC;IAepB;;OAEG;IACG,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK5C;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BtE;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IA4BtE;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQvE;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CAoBvE"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { WalletSchema, ChainSchema, CHAIN_IDS, } from "../types/schemas.js";
|
|
3
|
+
// Balance response from API
|
|
4
|
+
const BalanceResponseSchema = z.object({
|
|
5
|
+
walletId: z.string(),
|
|
6
|
+
address: z.string(),
|
|
7
|
+
chainId: z.number(),
|
|
8
|
+
balance: z.string(),
|
|
9
|
+
balanceFormatted: z.string(),
|
|
10
|
+
symbol: z.string(),
|
|
11
|
+
tokenBalances: z
|
|
12
|
+
.array(z.object({
|
|
13
|
+
tokenAddress: z.string(),
|
|
14
|
+
symbol: z.string(),
|
|
15
|
+
name: z.string(),
|
|
16
|
+
decimals: z.number(),
|
|
17
|
+
balance: z.string(),
|
|
18
|
+
formatted: z.string(),
|
|
19
|
+
usdValue: z.string().optional(),
|
|
20
|
+
}))
|
|
21
|
+
.optional(),
|
|
22
|
+
});
|
|
23
|
+
export class WalletsApi {
|
|
24
|
+
http;
|
|
25
|
+
constructor(http) {
|
|
26
|
+
this.http = http;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* List all wallets for an agent
|
|
30
|
+
*/
|
|
31
|
+
async list(agentId, options) {
|
|
32
|
+
const params = {
|
|
33
|
+
agentId,
|
|
34
|
+
};
|
|
35
|
+
if (options?.includeBalances) {
|
|
36
|
+
params.includeBalances = "true";
|
|
37
|
+
}
|
|
38
|
+
const response = await this.http.get(`/api/wallets`, params);
|
|
39
|
+
return z.array(WalletSchema).parse(response);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get a specific wallet by ID
|
|
43
|
+
*/
|
|
44
|
+
async get(walletId) {
|
|
45
|
+
const response = await this.http.get(`/api/wallets/${walletId}`);
|
|
46
|
+
return WalletSchema.parse(response);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get wallet balance
|
|
50
|
+
*/
|
|
51
|
+
async getBalance(walletId, chainId) {
|
|
52
|
+
const params = {};
|
|
53
|
+
if (chainId !== undefined) {
|
|
54
|
+
params.chainId = chainId.toString();
|
|
55
|
+
}
|
|
56
|
+
const response = await this.http.get(`/api/wallets/${walletId}/balance`, params);
|
|
57
|
+
const parsed = BalanceResponseSchema.parse(response);
|
|
58
|
+
// Convert to simple balance map
|
|
59
|
+
const balance = {
|
|
60
|
+
[parsed.symbol]: parsed.balanceFormatted,
|
|
61
|
+
};
|
|
62
|
+
// Add token balances
|
|
63
|
+
if (parsed.tokenBalances) {
|
|
64
|
+
for (const token of parsed.tokenBalances) {
|
|
65
|
+
balance[token.symbol] = token.formatted;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return balance;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get balances for all wallets of an agent
|
|
72
|
+
*/
|
|
73
|
+
async getAllBalances(agentId) {
|
|
74
|
+
const wallets = await this.list(agentId, { includeBalances: true });
|
|
75
|
+
const balances = {};
|
|
76
|
+
for (const wallet of wallets) {
|
|
77
|
+
// Find chain name from chainId
|
|
78
|
+
const chainEntry = Object.entries(CHAIN_IDS).find(([_, id]) => id === wallet.chainId);
|
|
79
|
+
if (!chainEntry)
|
|
80
|
+
continue;
|
|
81
|
+
const chainName = chainEntry[0];
|
|
82
|
+
const chainResult = ChainSchema.safeParse(chainName);
|
|
83
|
+
if (!chainResult.success)
|
|
84
|
+
continue;
|
|
85
|
+
const balance = {};
|
|
86
|
+
if (wallet.symbol && wallet.balance) {
|
|
87
|
+
balance[wallet.symbol] = wallet.balance;
|
|
88
|
+
}
|
|
89
|
+
balances[chainResult.data] = balance;
|
|
90
|
+
}
|
|
91
|
+
return balances;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Get wallet address for a specific chain
|
|
95
|
+
*/
|
|
96
|
+
async getAddress(agentId, chain) {
|
|
97
|
+
const chainId = CHAIN_IDS[chain];
|
|
98
|
+
const wallets = await this.list(agentId);
|
|
99
|
+
const wallet = wallets.find((w) => w.chainId === chainId);
|
|
100
|
+
return wallet?.address ?? null;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get all wallet addresses for an agent
|
|
104
|
+
*/
|
|
105
|
+
async getAllAddresses(agentId) {
|
|
106
|
+
const wallets = await this.list(agentId);
|
|
107
|
+
const addresses = {};
|
|
108
|
+
for (const wallet of wallets) {
|
|
109
|
+
const chainEntry = Object.entries(CHAIN_IDS).find(([_, id]) => id === wallet.chainId);
|
|
110
|
+
if (!chainEntry)
|
|
111
|
+
continue;
|
|
112
|
+
const chainName = chainEntry[0];
|
|
113
|
+
const chainResult = ChainSchema.safeParse(chainName);
|
|
114
|
+
if (!chainResult.success)
|
|
115
|
+
continue;
|
|
116
|
+
addresses[chainResult.data] = wallet.address;
|
|
117
|
+
}
|
|
118
|
+
return addresses;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=wallets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallets.js","sourceRoot":"","sources":["../../src/api/wallets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type Credentials } from "../types/schemas.js";
|
|
2
|
+
export type { Credentials };
|
|
3
|
+
/**
|
|
4
|
+
* Get the credentials directory path
|
|
5
|
+
*/
|
|
6
|
+
export declare function getCredentialsDir(): string;
|
|
7
|
+
/**
|
|
8
|
+
* Get the credentials file path
|
|
9
|
+
*/
|
|
10
|
+
export declare function getCredentialsPath(): string;
|
|
11
|
+
/**
|
|
12
|
+
* Load credentials from disk
|
|
13
|
+
* @returns Credentials if found and valid, null otherwise
|
|
14
|
+
*/
|
|
15
|
+
export declare function loadCredentials(): Credentials | null;
|
|
16
|
+
/**
|
|
17
|
+
* Save credentials to disk
|
|
18
|
+
*/
|
|
19
|
+
export declare function saveCredentials(credentials: Credentials): void;
|
|
20
|
+
/**
|
|
21
|
+
* Delete credentials from disk
|
|
22
|
+
*/
|
|
23
|
+
export declare function deleteCredentials(): void;
|
|
24
|
+
/**
|
|
25
|
+
* Check if credentials exist
|
|
26
|
+
*/
|
|
27
|
+
export declare function hasCredentials(): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Get API key from environment variable or credentials file
|
|
30
|
+
* @param envVarName Name of the environment variable to check (default: SPONGE_API_KEY)
|
|
31
|
+
*/
|
|
32
|
+
export declare function getApiKey(envVarName?: string): string | null;
|
|
33
|
+
/**
|
|
34
|
+
* Get agent ID from credentials file
|
|
35
|
+
*/
|
|
36
|
+
export declare function getAgentId(): string | null;
|
|
37
|
+
//# sourceMappingURL=credentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/auth/credentials.ts"],"names":[],"mappings":"AAGA,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAG1E,YAAY,EAAE,WAAW,EAAE,CAAC;AAK5B;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAYD;;;GAGG;AACH,wBAAgB,eAAe,IAAI,WAAW,GAAG,IAAI,CAsBpD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAU9D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,UAAU,SAAmB,GAAG,MAAM,GAAG,IAAI,CAUtE;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,GAAG,IAAI,CAG1C"}
|