@kayibal/fynd-client 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/dist/viem.d.ts ADDED
@@ -0,0 +1,72 @@
1
+ import type { Address, Hex } from './types.js';
2
+ import type { EthProvider } from './client.js';
3
+ /**
4
+ * Minimal subset of viem's `PublicClient` used by {@link viemProvider}.
5
+ *
6
+ * Any viem `PublicClient` created via `createPublicClient` satisfies this interface.
7
+ */
8
+ export interface ViemPublicClient {
9
+ getTransactionCount(args: {
10
+ address: Address;
11
+ }): Promise<number>;
12
+ estimateFeesPerGas(): Promise<{
13
+ maxFeePerGas: bigint | null;
14
+ maxPriorityFeePerGas: bigint | null;
15
+ }>;
16
+ call(args: {
17
+ to: Address;
18
+ data: Hex;
19
+ value: bigint;
20
+ gas: bigint;
21
+ maxFeePerGas: bigint;
22
+ maxPriorityFeePerGas: bigint;
23
+ }): Promise<{
24
+ data?: Hex | undefined;
25
+ }>;
26
+ estimateGas(args: {
27
+ account: Address;
28
+ to: Address;
29
+ data: Hex;
30
+ value: bigint;
31
+ maxFeePerGas: bigint;
32
+ maxPriorityFeePerGas: bigint;
33
+ }): Promise<bigint>;
34
+ sendRawTransaction(args: {
35
+ serializedTransaction: Hex;
36
+ }): Promise<Hex>;
37
+ getTransactionReceipt(args: {
38
+ hash: Hex;
39
+ }): Promise<{
40
+ transactionHash: Hex;
41
+ status: 'success' | 'reverted';
42
+ gasUsed: bigint;
43
+ effectiveGasPrice: bigint;
44
+ logs: ReadonlyArray<{
45
+ address: string;
46
+ topics: readonly string[];
47
+ data: string;
48
+ }>;
49
+ }>;
50
+ readContract(args: {
51
+ address: Address;
52
+ abi: readonly unknown[];
53
+ functionName: string;
54
+ args?: readonly unknown[];
55
+ }): Promise<unknown>;
56
+ /** Optional: raw RPC request, used for debug_traceTransaction. */
57
+ request?<T = unknown>(args: {
58
+ method: string;
59
+ params?: readonly unknown[];
60
+ }): Promise<T>;
61
+ }
62
+ /**
63
+ * Adapts a viem `PublicClient` into an {@link EthProvider} for use with {@link FyndClient}.
64
+ *
65
+ * @example
66
+ * ```ts
67
+ * const provider = viemProvider(publicClient, senderAddress);
68
+ * const client = new FyndClient({ baseUrl, chainId, provider });
69
+ * ```
70
+ */
71
+ export declare function viemProvider(client: ViemPublicClient, sender: Address): EthProvider;
72
+ //# sourceMappingURL=viem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viem.d.ts","sourceRoot":"","sources":["../src/viem.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAS/C;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mBAAmB,CACjB,IAAI,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,GACzB,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,kBAAkB,IAAI,OAAO,CAAC;QAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;KACrC,CAAC,CAAC;IACH,IAAI,CACF,IAAI,EAAE;QACJ,EAAE,EAAE,OAAO,CAAC;QACZ,IAAI,EAAE,GAAG,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,YAAY,EAAE,MAAM,CAAC;QACrB,oBAAoB,EAAE,MAAM,CAAC;KAC9B,GACA,OAAO,CAAC;QAAE,IAAI,CAAC,EAAE,GAAG,GAAG,SAAS,CAAA;KAAE,CAAC,CAAC;IACvC,WAAW,CACT,IAAI,EAAE;QACJ,OAAO,EAAE,OAAO,CAAC;QACjB,EAAE,EAAE,OAAO,CAAC;QACZ,IAAI,EAAE,GAAG,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,oBAAoB,EAAE,MAAM,CAAC;KAC9B,GACA,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,kBAAkB,CAChB,IAAI,EAAE;QAAE,qBAAqB,EAAE,GAAG,CAAA;KAAE,GACnC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChB,qBAAqB,CACnB,IAAI,EAAE;QAAE,IAAI,EAAE,GAAG,CAAA;KAAE,GAClB,OAAO,CAAC;QACT,eAAe,EAAE,GAAG,CAAC;QACrB,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC;QAC/B,OAAO,EAAE,MAAM,CAAC;QAChB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,IAAI,EAAE,aAAa,CAAC;YAClB,OAAO,EAAE,MAAM,CAAC;YAChB,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;YAC1B,IAAI,EAAE,MAAM,CAAC;SACd,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,YAAY,CAAC,IAAI,EAAE;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,GAAG,EAAE,SAAS,OAAO,EAAE,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;KAC3B,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrB,kEAAkE;IAClE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC1F;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,OAAO,GACd,WAAW,CA0Eb"}
package/dist/viem.js ADDED
@@ -0,0 +1,93 @@
1
+ const ERC20_ALLOWANCE_ABI = [{
2
+ name: 'allowance', type: 'function',
3
+ inputs: [{ name: 'owner', type: 'address' }, { name: 'spender', type: 'address' }],
4
+ outputs: [{ type: 'uint256' }],
5
+ stateMutability: 'view',
6
+ }];
7
+ /**
8
+ * Adapts a viem `PublicClient` into an {@link EthProvider} for use with {@link FyndClient}.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const provider = viemProvider(publicClient, senderAddress);
13
+ * const client = new FyndClient({ baseUrl, chainId, provider });
14
+ * ```
15
+ */
16
+ export function viemProvider(client, sender) {
17
+ return {
18
+ async getTransactionCount(args) {
19
+ return client.getTransactionCount(args);
20
+ },
21
+ async estimateFeesPerGas() {
22
+ const fees = await client.estimateFeesPerGas();
23
+ return {
24
+ maxFeePerGas: fees.maxFeePerGas ?? 0n,
25
+ maxPriorityFeePerGas: fees.maxPriorityFeePerGas ?? 0n,
26
+ };
27
+ },
28
+ async call(tx) {
29
+ const result = await client.call({
30
+ to: tx.to,
31
+ data: tx.data,
32
+ value: tx.value,
33
+ gas: tx.gas,
34
+ maxFeePerGas: tx.maxFeePerGas,
35
+ maxPriorityFeePerGas: tx.maxPriorityFeePerGas,
36
+ });
37
+ return result.data !== undefined ? { data: result.data } : {};
38
+ },
39
+ async estimateGas(tx) {
40
+ return client.estimateGas({
41
+ account: sender,
42
+ to: tx.to,
43
+ data: tx.data,
44
+ value: tx.value,
45
+ maxFeePerGas: tx.maxFeePerGas,
46
+ maxPriorityFeePerGas: tx.maxPriorityFeePerGas,
47
+ });
48
+ },
49
+ async sendRawTransaction(rawTx) {
50
+ return client.sendRawTransaction({
51
+ serializedTransaction: rawTx,
52
+ });
53
+ },
54
+ async getTransactionReceipt(args) {
55
+ let receipt;
56
+ try {
57
+ receipt = await client.getTransactionReceipt(args);
58
+ }
59
+ catch {
60
+ // viem throws when the receipt is not yet available; settle() expects null.
61
+ return null;
62
+ }
63
+ return {
64
+ transactionHash: receipt.transactionHash,
65
+ status: receipt.status === 'reverted' ? 0 : 1,
66
+ gasUsed: receipt.gasUsed,
67
+ effectiveGasPrice: receipt.effectiveGasPrice,
68
+ logs: receipt.logs.map((log) => ({
69
+ address: log.address,
70
+ topics: log.topics,
71
+ data: log.data,
72
+ })),
73
+ };
74
+ },
75
+ async debugTraceTransaction(hash) {
76
+ if (client.request === undefined)
77
+ throw new Error('request not available');
78
+ const result = await client.request({
79
+ method: 'debug_traceTransaction',
80
+ params: [hash, { tracer: 'callTracer' }],
81
+ });
82
+ return { output: (result.output ?? '0x') };
83
+ },
84
+ async readAllowance(token, owner, spender) {
85
+ const result = await client.readContract({
86
+ address: token, abi: ERC20_ALLOWANCE_ABI,
87
+ functionName: 'allowance', args: [owner, spender],
88
+ });
89
+ return result;
90
+ },
91
+ };
92
+ }
93
+ //# sourceMappingURL=viem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viem.js","sourceRoot":"","sources":["../src/viem.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@kayibal/fynd-client",
3
+ "version": "0.1.0",
4
+ "description": "TypeScript client for the Fynd DEX router",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": {
8
+ "import": "./dist/index.js",
9
+ "types": "./dist/index.d.ts"
10
+ }
11
+ },
12
+ "files": ["dist"],
13
+ "scripts": {
14
+ "build": "tsc",
15
+ "typecheck": "tsc --noEmit",
16
+ "lint": "oxlint src/",
17
+ "test": "vitest run"
18
+ },
19
+ "dependencies": {
20
+ "openapi-fetch": "0.17.0",
21
+ "viem": "2.46.3"
22
+ },
23
+ "devDependencies": {
24
+ "typescript": "5.8.2",
25
+ "oxlint": "1.51.0",
26
+ "vitest": "4.0.18"
27
+ }
28
+ }