@firefly-dao/sdk 1.0.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.
Files changed (74) hide show
  1. package/LICENSE +16 -0
  2. package/README.md +265 -0
  3. package/_cjs/package.json +1 -0
  4. package/_cjs/src/api/index.js +29 -0
  5. package/_cjs/src/api/index.js.map +1 -0
  6. package/_cjs/src/client/client.js +180 -0
  7. package/_cjs/src/client/client.js.map +1 -0
  8. package/_cjs/src/constants/index.js +11 -0
  9. package/_cjs/src/constants/index.js.map +1 -0
  10. package/_cjs/src/index.js +6 -0
  11. package/_cjs/src/index.js.map +1 -0
  12. package/_cjs/src/test.js +35 -0
  13. package/_cjs/src/test.js.map +1 -0
  14. package/_cjs/src/types/Execute.js +3 -0
  15. package/_cjs/src/types/Execute.js.map +1 -0
  16. package/_cjs/src/types/index.js +5 -0
  17. package/_cjs/src/types/index.js.map +1 -0
  18. package/_cjs/src/utils/axios.js +18 -0
  19. package/_cjs/src/utils/axios.js.map +1 -0
  20. package/_cjs/src/utils/index.js +48 -0
  21. package/_cjs/src/utils/index.js.map +1 -0
  22. package/_cjs/src/utils/log.js +2 -0
  23. package/_cjs/src/utils/log.js.map +1 -0
  24. package/_cjs/src/utils/request.js +55 -0
  25. package/_cjs/src/utils/request.js.map +1 -0
  26. package/_cjs/tsconfig.build.tsbuildinfo +1 -0
  27. package/_esm/package.json +1 -0
  28. package/_esm/src/api/index.js +22 -0
  29. package/_esm/src/api/index.js.map +1 -0
  30. package/_esm/src/client/client.js +179 -0
  31. package/_esm/src/client/client.js.map +1 -0
  32. package/_esm/src/constants/index.js +8 -0
  33. package/_esm/src/constants/index.js.map +1 -0
  34. package/_esm/src/index.js +3 -0
  35. package/_esm/src/index.js.map +1 -0
  36. package/_esm/src/test.js +33 -0
  37. package/_esm/src/test.js.map +1 -0
  38. package/_esm/src/types/Execute.js +2 -0
  39. package/_esm/src/types/Execute.js.map +1 -0
  40. package/_esm/src/types/index.js +2 -0
  41. package/_esm/src/types/index.js.map +1 -0
  42. package/_esm/src/utils/axios.js +15 -0
  43. package/_esm/src/utils/axios.js.map +1 -0
  44. package/_esm/src/utils/index.js +45 -0
  45. package/_esm/src/utils/index.js.map +1 -0
  46. package/_esm/src/utils/log.js +2 -0
  47. package/_esm/src/utils/log.js.map +1 -0
  48. package/_esm/src/utils/request.js +49 -0
  49. package/_esm/src/utils/request.js.map +1 -0
  50. package/_esm/tsconfig.build.tsbuildinfo +1 -0
  51. package/_types/src/api/index.d.ts +9 -0
  52. package/_types/src/api/index.d.ts.map +1 -0
  53. package/_types/src/client/client.d.ts +33 -0
  54. package/_types/src/client/client.d.ts.map +1 -0
  55. package/_types/src/constants/index.d.ts +7 -0
  56. package/_types/src/constants/index.d.ts.map +1 -0
  57. package/_types/src/index.d.ts +3 -0
  58. package/_types/src/index.d.ts.map +1 -0
  59. package/_types/src/test.d.ts +2 -0
  60. package/_types/src/test.d.ts.map +1 -0
  61. package/_types/src/types/Execute.d.ts +107 -0
  62. package/_types/src/types/Execute.d.ts.map +1 -0
  63. package/_types/src/types/index.d.ts +3 -0
  64. package/_types/src/types/index.d.ts.map +1 -0
  65. package/_types/src/utils/axios.d.ts +2 -0
  66. package/_types/src/utils/axios.d.ts.map +1 -0
  67. package/_types/src/utils/index.d.ts +5 -0
  68. package/_types/src/utils/index.d.ts.map +1 -0
  69. package/_types/src/utils/log.d.ts +1 -0
  70. package/_types/src/utils/log.d.ts.map +1 -0
  71. package/_types/src/utils/request.d.ts +12 -0
  72. package/_types/src/utils/request.d.ts.map +1 -0
  73. package/_types/tsconfig.build.tsbuildinfo +1 -0
  74. package/package.json +57 -0
@@ -0,0 +1,9 @@
1
+ export declare function getSwapTransferStatusAPI({ chainId, hash }: {
2
+ chainId: number;
3
+ hash: string;
4
+ }): Promise<import("axios").AxiosResponse<any, any, {}>>;
5
+ export declare function actionReportApi(action: any): Promise<import("axios").AxiosResponse<any, any, {}>>;
6
+ export declare function getChainsApi(): Promise<import("axios").AxiosResponse<any, any, {}>>;
7
+ export declare function getTokensApi(): Promise<import("axios").AxiosResponse<any, any, {}>>;
8
+ export declare function postSpeedActionApi(action: any): Promise<import("axios").AxiosResponse<any, any, {}>>;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/index.ts"],"names":[],"mappings":"AAEA,wBAAgB,wBAAwB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,wDAO5F;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,GAAG,wDAE1C;AAED,wBAAgB,YAAY,yDAE3B;AAED,wBAAgB,YAAY,yDAE3B;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,wDAE7C"}
@@ -0,0 +1,33 @@
1
+ import { type WalletClient } from 'viem';
2
+ import { LogLevel, MAINNET_FIREFLY_API, TESTNET_FIREFLY_API } from '../constants/index.js';
3
+ import { type Execute, type ExecuteResponse, type ExecuteProgressCallback } from '../types/Execute.js';
4
+ export interface GetQuoteParameters {
5
+ fromChainId: number;
6
+ fromTokenAddress: string;
7
+ toChainId: number;
8
+ toTokenAddress: string;
9
+ amount: string;
10
+ recipient: string;
11
+ sender?: string;
12
+ referrer?: string;
13
+ slippageTolerance?: number;
14
+ }
15
+ export type BaseApiUrl = typeof MAINNET_FIREFLY_API | typeof TESTNET_FIREFLY_API;
16
+ export declare class FireflyClient {
17
+ baseApiUrl: BaseApiUrl;
18
+ referrer?: string;
19
+ logLevel?: LogLevel;
20
+ constructor({ referrer, baseApiUrl, logLevel }: {
21
+ referrer?: string;
22
+ baseApiUrl: BaseApiUrl;
23
+ logLevel?: LogLevel;
24
+ });
25
+ getQuote(parameters: GetQuoteParameters): Promise<any>;
26
+ execute({ quote, wallet, onProgress }: {
27
+ quote: Execute;
28
+ wallet: WalletClient;
29
+ onProgress?: ExecuteProgressCallback;
30
+ }): Promise<ExecuteResponse>;
31
+ private logs;
32
+ }
33
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/client/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,YAAY,EAAE,MAAM,MAAM,CAAC;AAGnE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE3F,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAEvG,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,MAAM,UAAU,GAAG,OAAO,mBAAmB,GAAG,OAAO,mBAAmB,CAAC;AAEjF,qBAAa,aAAa;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC;gBAER,EAAE,QAAwB,EAAE,UAAU,EAAE,QAAwB,EAAE,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,UAAU,CAAC;QAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;KAAE;IAM5I,QAAQ,CAAC,UAAU,EAAE,kBAAkB;IA8BvC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,YAAY,CAAC;QAAC,UAAU,CAAC,EAAE,uBAAuB,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,CAAC;YA4HxI,IAAI;CAMnB"}
@@ -0,0 +1,7 @@
1
+ export declare const MAINNET_FIREFLY_API = "https://api.fireflylabs.app";
2
+ export declare const TESTNET_FIREFLY_API = "https://api.testnets.fireflylabs.app";
3
+ export declare enum LogLevel {
4
+ Info = 1,
5
+ None = 0
6
+ }
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/constants/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,gCAAgC,CAAA;AAChE,eAAO,MAAM,mBAAmB,yCAAyC,CAAA;AAGzE,oBAAY,QAAQ;IAClB,IAAI,IAAI;IACR,IAAI,IAAI;CACT"}
@@ -0,0 +1,3 @@
1
+ export * from './client/client.js';
2
+ export * from './constants/index.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,107 @@
1
+ import type { AxiosRequestConfig } from 'axios';
2
+ export type Execute = {
3
+ steps: {
4
+ id: "approve" | "deposit";
5
+ action: string;
6
+ data: {
7
+ from: string;
8
+ to: string;
9
+ data: string;
10
+ value: string;
11
+ chainId: number;
12
+ maxFeePerGas: string;
13
+ maxPriorityFeePerGas: string;
14
+ gas: string;
15
+ gasPrice: string;
16
+ gasLimit?: string;
17
+ };
18
+ }[];
19
+ error?: any;
20
+ fees: {
21
+ senderGas: {
22
+ amountUsd: string;
23
+ };
24
+ firefly: {
25
+ amountUsd: string;
26
+ };
27
+ fireflyGas: {
28
+ amountUsd: string;
29
+ };
30
+ fireflyService: {
31
+ amountUsd: string;
32
+ };
33
+ };
34
+ details: {
35
+ router: {
36
+ logo: string;
37
+ name: string;
38
+ }[];
39
+ timeEstimate: number;
40
+ fromTimeEstimate: number;
41
+ dstTimeEstimate: number;
42
+ rate: string;
43
+ totalImpact: {
44
+ usd: string;
45
+ percent: string;
46
+ };
47
+ swapImpact: {
48
+ usd: string;
49
+ percent: string;
50
+ };
51
+ currencyIn: {
52
+ currency: {
53
+ chainId: number;
54
+ address: string;
55
+ decimal: number;
56
+ name: string;
57
+ symbol: string;
58
+ metadata: {
59
+ logoURI: string;
60
+ };
61
+ };
62
+ amount: string;
63
+ amountFormatted: string;
64
+ amountUsd: string;
65
+ minimumAmount: string;
66
+ };
67
+ currencyOut: {
68
+ currency: {
69
+ chainId: number;
70
+ address: string;
71
+ decimal: number;
72
+ name: string;
73
+ symbol: string;
74
+ metadata: {
75
+ logoURI: string;
76
+ };
77
+ };
78
+ amount: string;
79
+ amountFormatted: string;
80
+ amountUsd: string;
81
+ minimumAmount: string;
82
+ };
83
+ slippageTolerance: {
84
+ origin: {
85
+ percent: string;
86
+ };
87
+ destination: {
88
+ percent: string;
89
+ };
90
+ };
91
+ };
92
+ request?: AxiosRequestConfig;
93
+ };
94
+ export type ExecuteStep = NonNullable<Execute['steps']>;
95
+ export type ExecuteStepItem = NonNullable<Execute['steps'][0]>;
96
+ export type ExecuteResponse = {
97
+ status: 'idle' | 'failed' | 'success';
98
+ message: string;
99
+ };
100
+ export interface ExecuteProgressInfo {
101
+ step: 'approve' | 'deposit';
102
+ status: 'success' | 'failed';
103
+ hash?: string;
104
+ error?: any;
105
+ }
106
+ export type ExecuteProgressCallback = (info: ExecuteProgressInfo) => void;
107
+ //# sourceMappingURL=Execute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Execute.d.ts","sourceRoot":"","sources":["../../../src/types/Execute.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export type ChainType = 'Ton' | 'Fuel' | 'Eclipse' | 'Solana' | 'Soon' | 'Sui' | 'ICP' | 'Starknet' | 'Movement' | 'SvmBnb' | 'SvmBase' | 'SonicSVM' | 'Aptos' | 'EVM' | 'Tron' | 'ZksLite';
2
+ export * from './Execute.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,KAAK,GACL,MAAM,GACN,SAAS,GACT,QAAQ,GACR,MAAM,GACN,KAAK,GACL,KAAK,GACL,UAAU,GACV,UAAU,GACV,QAAQ,GACR,SAAS,GACT,UAAU,GACV,OAAO,GACP,KAAK,GACL,MAAM,GACN,SAAS,CAAC;AAEd,cAAc,cAAc,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const axios: import("axios").AxiosInstance;
2
+ //# sourceMappingURL=axios.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"axios.d.ts","sourceRoot":"","sources":["../../../src/utils/axios.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,KAAK,+BAAkB,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { type ChainType } from '../types/index.js';
2
+ import { type Execute } from "../types/Execute.js";
3
+ export declare const handleWaitTransactionReceiptParams: (step: Execute["steps"][number]) => any;
4
+ export declare const getEcoTypeByChainId: (chainId: number) => ChainType;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,eAAO,MAAM,kCAAkC,GAC7C,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,QA0B/B,CAAC;AAGF,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,cAoBlD,CAAC"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../../src/utils/log.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import type { AxiosRequestConfig } from 'axios';
2
+ export declare function request(config?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<any, any, {}>>;
3
+ export declare function isAPIError(error?: Error): boolean | undefined;
4
+ export declare class APIError extends Error {
5
+ type: string;
6
+ statusCode: number;
7
+ rawError: any;
8
+ endpoint?: string;
9
+ cause?: any;
10
+ constructor(message: string | undefined, statusCode: number, rawError?: any, type?: string);
11
+ }
12
+ //# sourceMappingURL=request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/utils/request.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAA;AAE/C,wBAAgB,OAAO,CAAC,MAAM,GAAE,kBAAuB,wDAEtD;AAED,wBAAgB,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,uBAEvC;AAED,qBAAa,QAAS,SAAQ,KAAK;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,GAAG,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACR,KAAK,CAAC,EAAE,GAAG,CAAA;gBAGlB,OAAO,EAAE,MAAM,YAAmB,EAClC,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,GAAG,EACd,IAAI,GAAE,MAAmB;CAU5B"}