@morambacrypto/connect 0.0.13 → 0.0.15

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.
@@ -0,0 +1,159 @@
1
+ import { AxiosInstance } from 'axios';
2
+
3
+ declare class HttpClient {
4
+ private client;
5
+ private maxRetries;
6
+ private retryDelay;
7
+ constructor(baseURL: string, headers?: Record<string, string>, maxRetries?: number, // default: 4 retries
8
+ retryDelay?: number);
9
+ get axiosInstance(): AxiosInstance;
10
+ private setupRetryInterceptor;
11
+ post<T = any>(url: string, data: any, extraHeaders?: Record<string, string>): Promise<T>;
12
+ patch<T = any>(url: string, data: any, extraHeaders?: Record<string, string>): Promise<T>;
13
+ get<T = any>(url: string, extraHeaders?: Record<string, string>): Promise<T>;
14
+ }
15
+
16
+ interface CreateJwtPayload {
17
+ userid: string;
18
+ }
19
+ interface JwtTokenData {
20
+ token: string;
21
+ }
22
+ interface CreateJwtResponse {
23
+ success: boolean;
24
+ message: string;
25
+ data: JwtTokenData;
26
+ }
27
+
28
+ declare class AuthAPI {
29
+ private http;
30
+ private partnerId;
31
+ private apiKey;
32
+ constructor(http: HttpClient, partnerId: string, apiKey: string);
33
+ createJwtToken(payload: CreateJwtPayload): Promise<CreateJwtResponse>;
34
+ }
35
+
36
+ interface PaymentMethod {
37
+ network: string;
38
+ token: string;
39
+ address: string;
40
+ }
41
+ interface CreateCompanyPayload {
42
+ payment_method: PaymentMethod;
43
+ name: string;
44
+ email: string;
45
+ }
46
+ interface CompanyData {
47
+ id: string;
48
+ name: string;
49
+ email: string;
50
+ partner_id: string;
51
+ created_at: string;
52
+ updated_at: string;
53
+ }
54
+ interface CreateCompanyResponse {
55
+ success: boolean;
56
+ message: string;
57
+ data: CompanyData | null;
58
+ }
59
+ interface UpdateCompanyEmailPayload {
60
+ company_id: string;
61
+ email: string;
62
+ }
63
+ interface UpdateCompanyEmailResponse {
64
+ success: boolean;
65
+ message: string;
66
+ data: CompanyData | null;
67
+ }
68
+ interface GetCompaniesQuery {
69
+ limit?: number;
70
+ direction?: "forward" | "backward";
71
+ cursor?: string;
72
+ }
73
+ interface CompanyListItem {
74
+ id: string;
75
+ name: string;
76
+ email: string;
77
+ partner_id: string;
78
+ network: string;
79
+ token: string;
80
+ address: string;
81
+ created_at: string;
82
+ updated_at: string;
83
+ }
84
+ interface PaginationData {
85
+ has_next: boolean;
86
+ has_previous: boolean;
87
+ next_cursor: string;
88
+ previous_cursor: string;
89
+ limit: number;
90
+ total_returned: number;
91
+ }
92
+ interface GetCompaniesResponse {
93
+ success: boolean;
94
+ message: string;
95
+ data: {
96
+ companies: CompanyListItem[];
97
+ pagination: PaginationData;
98
+ };
99
+ }
100
+ interface UpdateCompanyPaymentPayload {
101
+ company_id: string;
102
+ payment_method: {
103
+ network: string;
104
+ token: string;
105
+ address: string;
106
+ };
107
+ }
108
+ interface UpdateCompanyPaymentResponse {
109
+ success: boolean;
110
+ message: string;
111
+ data: CompanyData | null;
112
+ }
113
+
114
+ declare class CompanyAPI {
115
+ private http;
116
+ private partnerId;
117
+ private apiKey;
118
+ constructor(http: HttpClient, partnerId: string, apiKey: string);
119
+ createCompany(payload: CreateCompanyPayload, jwtToken: string): Promise<CreateCompanyResponse>;
120
+ updateCompanyEmail(payload: UpdateCompanyEmailPayload, jwtToken: string): Promise<UpdateCompanyEmailResponse>;
121
+ getCompaniesByPartner(jwtToken: string, query?: GetCompaniesQuery): Promise<GetCompaniesResponse>;
122
+ updateCompanyPaymentMethod(payload: UpdateCompanyPaymentPayload, jwtToken: string): Promise<UpdateCompanyPaymentResponse>;
123
+ }
124
+
125
+ interface MorambaClientConfig {
126
+ baseURL: string;
127
+ apiKey: string;
128
+ partnerId: string;
129
+ }
130
+ declare class MorambaClient {
131
+ auth: AuthAPI;
132
+ private http;
133
+ company: CompanyAPI;
134
+ constructor(config: MorambaClientConfig);
135
+ }
136
+
137
+ interface MonadApproveOptions {
138
+ privateKey: string;
139
+ unlimited?: boolean;
140
+ amount?: string;
141
+ decimalsOverride?: number;
142
+ }
143
+ declare function monadApprove(options: MonadApproveOptions): Promise<{
144
+ hash: any;
145
+ receipt: any;
146
+ }>;
147
+
148
+ interface SepoliaApproveOptions {
149
+ privateKey: string;
150
+ unlimited?: boolean;
151
+ amount?: string;
152
+ decimalsOverride?: number;
153
+ }
154
+ declare function sepoliaApprove(options: SepoliaApproveOptions): Promise<{
155
+ hash: any;
156
+ receipt: any;
157
+ }>;
158
+
159
+ export { type CompanyData, type CompanyListItem, type CreateCompanyPayload, type CreateCompanyResponse, type CreateJwtPayload, type CreateJwtResponse, type GetCompaniesQuery, type GetCompaniesResponse, type JwtTokenData, type MonadApproveOptions, MorambaClient, type MorambaClientConfig, type PaginationData, type PaymentMethod, type SepoliaApproveOptions, type UpdateCompanyEmailPayload, type UpdateCompanyEmailResponse, type UpdateCompanyPaymentPayload, type UpdateCompanyPaymentResponse, monadApprove, sepoliaApprove };
package/dist/index.d.ts CHANGED
@@ -1,2 +1,159 @@
1
- export * from "./MorambaClient";
2
- export * from "./types";
1
+ import { AxiosInstance } from 'axios';
2
+
3
+ declare class HttpClient {
4
+ private client;
5
+ private maxRetries;
6
+ private retryDelay;
7
+ constructor(baseURL: string, headers?: Record<string, string>, maxRetries?: number, // default: 4 retries
8
+ retryDelay?: number);
9
+ get axiosInstance(): AxiosInstance;
10
+ private setupRetryInterceptor;
11
+ post<T = any>(url: string, data: any, extraHeaders?: Record<string, string>): Promise<T>;
12
+ patch<T = any>(url: string, data: any, extraHeaders?: Record<string, string>): Promise<T>;
13
+ get<T = any>(url: string, extraHeaders?: Record<string, string>): Promise<T>;
14
+ }
15
+
16
+ interface CreateJwtPayload {
17
+ userid: string;
18
+ }
19
+ interface JwtTokenData {
20
+ token: string;
21
+ }
22
+ interface CreateJwtResponse {
23
+ success: boolean;
24
+ message: string;
25
+ data: JwtTokenData;
26
+ }
27
+
28
+ declare class AuthAPI {
29
+ private http;
30
+ private partnerId;
31
+ private apiKey;
32
+ constructor(http: HttpClient, partnerId: string, apiKey: string);
33
+ createJwtToken(payload: CreateJwtPayload): Promise<CreateJwtResponse>;
34
+ }
35
+
36
+ interface PaymentMethod {
37
+ network: string;
38
+ token: string;
39
+ address: string;
40
+ }
41
+ interface CreateCompanyPayload {
42
+ payment_method: PaymentMethod;
43
+ name: string;
44
+ email: string;
45
+ }
46
+ interface CompanyData {
47
+ id: string;
48
+ name: string;
49
+ email: string;
50
+ partner_id: string;
51
+ created_at: string;
52
+ updated_at: string;
53
+ }
54
+ interface CreateCompanyResponse {
55
+ success: boolean;
56
+ message: string;
57
+ data: CompanyData | null;
58
+ }
59
+ interface UpdateCompanyEmailPayload {
60
+ company_id: string;
61
+ email: string;
62
+ }
63
+ interface UpdateCompanyEmailResponse {
64
+ success: boolean;
65
+ message: string;
66
+ data: CompanyData | null;
67
+ }
68
+ interface GetCompaniesQuery {
69
+ limit?: number;
70
+ direction?: "forward" | "backward";
71
+ cursor?: string;
72
+ }
73
+ interface CompanyListItem {
74
+ id: string;
75
+ name: string;
76
+ email: string;
77
+ partner_id: string;
78
+ network: string;
79
+ token: string;
80
+ address: string;
81
+ created_at: string;
82
+ updated_at: string;
83
+ }
84
+ interface PaginationData {
85
+ has_next: boolean;
86
+ has_previous: boolean;
87
+ next_cursor: string;
88
+ previous_cursor: string;
89
+ limit: number;
90
+ total_returned: number;
91
+ }
92
+ interface GetCompaniesResponse {
93
+ success: boolean;
94
+ message: string;
95
+ data: {
96
+ companies: CompanyListItem[];
97
+ pagination: PaginationData;
98
+ };
99
+ }
100
+ interface UpdateCompanyPaymentPayload {
101
+ company_id: string;
102
+ payment_method: {
103
+ network: string;
104
+ token: string;
105
+ address: string;
106
+ };
107
+ }
108
+ interface UpdateCompanyPaymentResponse {
109
+ success: boolean;
110
+ message: string;
111
+ data: CompanyData | null;
112
+ }
113
+
114
+ declare class CompanyAPI {
115
+ private http;
116
+ private partnerId;
117
+ private apiKey;
118
+ constructor(http: HttpClient, partnerId: string, apiKey: string);
119
+ createCompany(payload: CreateCompanyPayload, jwtToken: string): Promise<CreateCompanyResponse>;
120
+ updateCompanyEmail(payload: UpdateCompanyEmailPayload, jwtToken: string): Promise<UpdateCompanyEmailResponse>;
121
+ getCompaniesByPartner(jwtToken: string, query?: GetCompaniesQuery): Promise<GetCompaniesResponse>;
122
+ updateCompanyPaymentMethod(payload: UpdateCompanyPaymentPayload, jwtToken: string): Promise<UpdateCompanyPaymentResponse>;
123
+ }
124
+
125
+ interface MorambaClientConfig {
126
+ baseURL: string;
127
+ apiKey: string;
128
+ partnerId: string;
129
+ }
130
+ declare class MorambaClient {
131
+ auth: AuthAPI;
132
+ private http;
133
+ company: CompanyAPI;
134
+ constructor(config: MorambaClientConfig);
135
+ }
136
+
137
+ interface MonadApproveOptions {
138
+ privateKey: string;
139
+ unlimited?: boolean;
140
+ amount?: string;
141
+ decimalsOverride?: number;
142
+ }
143
+ declare function monadApprove(options: MonadApproveOptions): Promise<{
144
+ hash: any;
145
+ receipt: any;
146
+ }>;
147
+
148
+ interface SepoliaApproveOptions {
149
+ privateKey: string;
150
+ unlimited?: boolean;
151
+ amount?: string;
152
+ decimalsOverride?: number;
153
+ }
154
+ declare function sepoliaApprove(options: SepoliaApproveOptions): Promise<{
155
+ hash: any;
156
+ receipt: any;
157
+ }>;
158
+
159
+ export { type CompanyData, type CompanyListItem, type CreateCompanyPayload, type CreateCompanyResponse, type CreateJwtPayload, type CreateJwtResponse, type GetCompaniesQuery, type GetCompaniesResponse, type JwtTokenData, type MonadApproveOptions, MorambaClient, type MorambaClientConfig, type PaginationData, type PaymentMethod, type SepoliaApproveOptions, type UpdateCompanyEmailPayload, type UpdateCompanyEmailResponse, type UpdateCompanyPaymentPayload, type UpdateCompanyPaymentResponse, monadApprove, sepoliaApprove };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export * from "./MorambaClient";
2
- export * from "./types";
1
+ "use strict";var R=Object.create;var u=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var E=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var U=(r,t)=>{for(var e in t)u(r,e,{get:t[e],enumerable:!0})},w=(r,t,e,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of T(t))!_.call(r,n)&&n!==e&&u(r,n,{get:()=>t[n],enumerable:!(o=k(t,n))||o.enumerable});return r};var K=(r,t,e)=>(e=r!=null?R(E(r)):{},w(t||!r||!r.__esModule?u(e,"default",{value:r,enumerable:!0}):e,r)),N=r=>w(u({},"__esModule",{value:!0}),r);var B={};U(B,{MorambaClient:()=>x,monadApprove:()=>M,sepoliaApprove:()=>O});module.exports=N(B);var P=K(require("axios")),y=class{constructor(t,e={},o=4,n=300){this.client=P.default.create({baseURL:t,headers:e,timeout:1e4}),this.maxRetries=o,this.retryDelay=n,this.setupRetryInterceptor()}get axiosInstance(){return this.client}setupRetryInterceptor(){this.client.interceptors.response.use(t=>t,async t=>{let e=t.config;if(!e||(e._retryCount||(e._retryCount=0),e._retryCount>=this.maxRetries))throw t;e._retryCount++;let o=this.retryDelay*Math.pow(2,e._retryCount);return await new Promise(n=>setTimeout(n,o)),this.client(e)})}post(t,e,o={}){return this.client.post(t,e,{headers:o}).then(n=>n.data)}patch(t,e,o={}){return this.client.patch(t,e,{headers:o}).then(n=>n.data)}get(t,e={}){return this.client.get(t,{headers:e}).then(o=>o.data)}};var h=class{constructor(t,e,o){this.http=t;this.partnerId=e;this.apiKey=o}createJwtToken(t){let e={...t,partner_id:this.partnerId,api_key:this.apiKey};return this.http.post("/api/v1/morambacypto/create/jwt_token",e)}};var g=class{constructor(t,e,o){this.http=t;this.partnerId=e;this.apiKey=o}createCompany(t,e){let o={...t,partner_id:this.partnerId,api_key:this.apiKey};return this.http.post("/api/v1/morambacypto/create/company",o,{Authorization:`Bearer ${e}`})}updateCompanyEmail(t,e){let o={...t,partner_id:this.partnerId,api_key:this.apiKey};return this.http.patch("/api/v1/morambacypto/update/company/email",o,{Authorization:`Bearer ${e}`})}getCompaniesByPartner(t,e={}){let o=new URLSearchParams;return e.limit&&o.append("limit",String(e.limit)),e.direction&&o.append("direction",e.direction),e.cursor&&o.append("cursor",e.cursor),this.http.get(`/api/v1/morambacypto/companies/partner/${this.partnerId}?${o.toString()}`,{Authorization:`Bearer ${t}`})}updateCompanyPaymentMethod(t,e){let o={...t,partner_id:this.partnerId,api_key:this.apiKey};return this.http.patch("/api/v1/morambacypto/update/company/payment",o,{Authorization:`Bearer ${e}`})}};var x=class{constructor(t){this.http=new y(t.baseURL,{"Content-Type":"application/json"}),this.auth=new h(this.http,t.partnerId,t.apiKey),this.company=new g(this.http,t.partnerId,t.apiKey)}};var s=require("ethers");var b={rpc:"https://testnet-rpc.monad.xyz",spender:"0xbAcEa624831C5f294a5E7FeC519232AA37ec0a8C",token:"0x62F6c82114809C00a1293be02A43C05a3F917202",decimals:18,defaultAmount:"1000"},I={rpc:"https://rpc.sepolia.org",spender:"0x6E2024Da220C081059f606D9EEAe670c84Ead9Ab",token:"0xbAcEa624831C5f294a5E7FeC519232AA37ec0a8C",decimals:18,defaultAmount:"1000"};async function M(r){let{privateKey:t,unlimited:e=!0,amount:o,decimalsOverride:n}=r,a=b,C=new s.ethers.JsonRpcProvider(a.rpc),c=new s.ethers.Wallet(t,C),f=["function approve(address spender, uint256 value) external returns (bool)"],A=new s.ethers.Contract(a.token,f,c),m=n!=null?n:a.decimals,l=o!=null?o:a.defaultAmount,v=e?s.ethers.MaxUint256:s.ethers.parseUnits(l,m);console.log("\u26A1 Monad approve()"),console.log("RPC:",a.rpc),console.log("Token:",a.token),console.log("Spender:",a.spender),console.log("Decimals:",m),console.log("Amount:",e?"UNLIMITED":l),console.log("From:",await c.getAddress());let i=await A.approve(a.spender,v);console.log("\u{1F4E4} TX:",i.hash);let d=await i.wait();return console.log("\u2705 Block:",d.blockNumber),{hash:i.hash,receipt:d}}var p=require("ethers");async function O(r){let{privateKey:t,unlimited:e=!0,amount:o,decimalsOverride:n}=r,a=I,C=new p.ethers.JsonRpcProvider(a.rpc),c=new p.ethers.Wallet(t,C),f=["function approve(address spender, uint256 value) external returns (bool)"],A=new p.ethers.Contract(a.token,f,c),m=n!=null?n:a.decimals,l=o!=null?o:a.defaultAmount,v=e?p.ethers.MaxUint256:p.ethers.parseUnits(l,m);console.log("\u26A1 Sepolia approve()"),console.log("RPC:",a.rpc),console.log("Token:",a.token),console.log("Spender:",a.spender),console.log("Decimals:",m),console.log("Amount:",e?"UNLIMITED":l),console.log("From:",await c.getAddress());let i=await A.approve(a.spender,v);console.log("\u{1F4E4} TX:",i.hash);let d=await i.wait();return console.log("\u2705 Block:",d.blockNumber),{hash:i.hash,receipt:d}}0&&(module.exports={MorambaClient,monadApprove,sepoliaApprove});
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/client/HttpClient.ts","../src/apis/auth.api.ts","../src/apis/company.api.ts","../src/MorambaClient.ts","../src/authorize/monad.approve.ts","../src/utils/networks.ts","../src/authorize/sepolia.approve.ts"],"sourcesContent":["export * from \"./MorambaClient\";\nexport * from \"./types\";\nexport * from \"./authorize\";\n","import axios, { AxiosInstance, AxiosError } from \"axios\";\n\nexport class HttpClient {\n private client: AxiosInstance;\n private maxRetries: number;\n private retryDelay: number; // base delay in milliseconds\n\n constructor(\n baseURL: string,\n headers: Record<string, string> = {},\n maxRetries = 4, // default: 4 retries\n retryDelay = 300 // base delay: 300ms\n ) {\n this.client = axios.create({\n baseURL,\n headers,\n timeout: 10000,\n });\n\n this.maxRetries = maxRetries;\n this.retryDelay = retryDelay;\n\n this.setupRetryInterceptor();\n }\n\n get axiosInstance(): AxiosInstance {\n return this.client;\n }\n\n private setupRetryInterceptor() {\n this.client.interceptors.response.use(\n response => response,\n async (error: AxiosError) => {\n const config: any = error.config;\n\n if (!config) throw error;\n\n // initialize retry counter\n if (!config._retryCount) config._retryCount = 0;\n\n // stop retry if max reached\n if (config._retryCount >= this.maxRetries) {\n throw error;\n }\n\n config._retryCount++;\n\n // exponential delay: delay * 2^(retryCount)\n const delay =\n this.retryDelay * Math.pow(2, config._retryCount);\n\n await new Promise(resolve => setTimeout(resolve, delay));\n\n return this.client(config);\n }\n );\n }\n post<T = any>(url: string, data: any, extraHeaders: Record<string, string> = {}): Promise<T> {\n return this.client\n .post<T>(url, data, { headers: extraHeaders })\n .then((res) => res.data);\n }\n patch<T = any>(\n url: string,\n data: any,\n extraHeaders: Record<string, string> = {}\n ): Promise<T> {\n return this.client\n .patch<T>(url, data, { headers: extraHeaders })\n .then((res) => res.data);\n }\n get<T = any>(url: string, extraHeaders: Record<string, string> = {}): Promise<T> {\n return this.client\n .get<T>(url, { headers: extraHeaders })\n .then((res) => res.data);\n }\n}\n","import { HttpClient } from \"../client/HttpClient\";\nimport {\n CreateJwtPayload,\n CreateJwtResponse,\n} from \"../types/auth.types\";\n\nexport class AuthAPI {\n constructor(\n private http: HttpClient,\n private partnerId: string,\n private apiKey: string\n ) { }\n\n createJwtToken(payload: CreateJwtPayload): Promise<CreateJwtResponse> {\n const fullBody = {\n ...payload, // { userid }\n partner_id: this.partnerId,\n api_key: this.apiKey,\n };\n\n\n return this.http.post(\"/api/v1/morambacypto/create/jwt_token\", fullBody);\n }\n}\n","import { HttpClient } from \"../client/HttpClient\";\nimport {\n CreateCompanyPayload,\n CreateCompanyResponse,\n UpdateCompanyEmailPayload,\n UpdateCompanyEmailResponse,\n GetCompaniesQuery,\n GetCompaniesResponse,\n UpdateCompanyPaymentPayload,\n UpdateCompanyPaymentResponse,\n} from \"../types/company.types\";\n\nexport class CompanyAPI {\n constructor(\n private http: HttpClient,\n private partnerId: string,\n private apiKey: string\n ) { }\n\n createCompany(payload: CreateCompanyPayload, jwtToken: string): Promise<CreateCompanyResponse> {\n const fullBody = {\n ...payload,\n partner_id: this.partnerId,\n api_key: this.apiKey,\n };\n\n return this.http.post(\n \"/api/v1/morambacypto/create/company\",\n fullBody,\n {\n Authorization: `Bearer ${jwtToken}`,\n }\n );\n }\n\n updateCompanyEmail(\n payload: UpdateCompanyEmailPayload,\n jwtToken: string\n ): Promise<UpdateCompanyEmailResponse> {\n const fullBody = {\n ...payload,\n partner_id: this.partnerId,\n api_key: this.apiKey,\n };\n\n return this.http.patch(\n \"/api/v1/morambacypto/update/company/email\",\n fullBody,\n {\n Authorization: `Bearer ${jwtToken}`,\n }\n );\n }\n getCompaniesByPartner(\n jwtToken: string,\n query: GetCompaniesQuery = {}\n ): Promise<GetCompaniesResponse> {\n const params = new URLSearchParams();\n\n if (query.limit) params.append(\"limit\", String(query.limit));\n if (query.direction) params.append(\"direction\", query.direction);\n if (query.cursor) params.append(\"cursor\", query.cursor);\n\n return this.http.get(\n `/api/v1/morambacypto/companies/partner/${this.partnerId}?${params.toString()}`,\n {\n Authorization: `Bearer ${jwtToken}`,\n }\n );\n }\n\n updateCompanyPaymentMethod(\n payload: UpdateCompanyPaymentPayload,\n jwtToken: string\n ): Promise<UpdateCompanyPaymentResponse> {\n const fullBody = {\n ...payload,\n partner_id: this.partnerId,\n api_key: this.apiKey,\n };\n\n return this.http.patch(\n \"/api/v1/morambacypto/update/company/payment\",\n fullBody,\n {\n Authorization: `Bearer ${jwtToken}`,\n }\n );\n }\n\n\n}\n","import { HttpClient } from \"./client/HttpClient\";\nimport { AuthAPI } from \"./apis/auth.api\";\nimport { CompanyAPI } from \"./apis/company.api\";\n\nexport interface MorambaClientConfig {\n baseURL: string;\n apiKey: string;\n partnerId: string;\n}\n\nexport class MorambaClient {\n public auth: AuthAPI;\n private http: HttpClient;\n public company: CompanyAPI;\n\n constructor(config: MorambaClientConfig) {\n this.http = new HttpClient(config.baseURL, {\n \"Content-Type\": \"application/json\",\n });\n\n this.auth = new AuthAPI(this.http, config.partnerId, config.apiKey);\n this.company = new CompanyAPI(this.http, config.partnerId, config.apiKey);\n }\n}\n","\nimport { ethers } from \"ethers\";\nimport { MONAD_CONFIG } from \"../utils/networks\";\n\nexport interface MonadApproveOptions {\n privateKey: string;\n unlimited?: boolean; // default: true\n amount?: string; // user-specified amount when limited\n decimalsOverride?: number; // optional override\n}\n\nexport async function monadApprove(options: MonadApproveOptions) {\n const {\n privateKey,\n unlimited = true,\n amount,\n decimalsOverride,\n } = options;\n\n const cfg = MONAD_CONFIG;\n\n const provider = new ethers.JsonRpcProvider(cfg.rpc);\n const wallet = new ethers.Wallet(privateKey, provider);\n\n const abi = [\n \"function approve(address spender, uint256 value) external returns (bool)\"\n ];\n\n const contract = new ethers.Contract(cfg.token, abi, wallet);\n\n const decimals = decimalsOverride ?? cfg.decimals;\n const humanAmount = amount ?? cfg.defaultAmount;\n\n const value = unlimited\n ? ethers.MaxUint256\n : ethers.parseUnits(humanAmount, decimals);\n\n console.log(\"⚡ Monad approve()\");\n console.log(\"RPC:\", cfg.rpc);\n console.log(\"Token:\", cfg.token);\n console.log(\"Spender:\", cfg.spender);\n console.log(\"Decimals:\", decimals);\n console.log(\"Amount:\", unlimited ? \"UNLIMITED\" : humanAmount);\n console.log(\"From:\", await wallet.getAddress());\n\n const tx = await contract.approve(cfg.spender, value);\n console.log(\"📤 TX:\", tx.hash);\n\n const receipt = await tx.wait();\n console.log(\"✅ Block:\", receipt.blockNumber);\n\n return { hash: tx.hash, receipt };\n}\n","\nexport interface TokenNetworkConfig {\n rpc: string;\n spender: string;\n token: string;\n decimals: number;\n defaultAmount: string;\n}\n\n// ▶️ MORAMBA Token (Monad)\nexport const MONAD_CONFIG: TokenNetworkConfig = {\n rpc: \"https://testnet-rpc.monad.xyz\",\n spender: \"0xbAcEa624831C5f294a5E7FeC519232AA37ec0a8C\",\n token: \"0x62F6c82114809C00a1293be02A43C05a3F917202\",\n decimals: 18,\n defaultAmount: \"1000\",\n};\n\n// ▶️ Sepolia \nexport const SEPOLIA_CONFIG: TokenNetworkConfig = {\n rpc: \"https://rpc.sepolia.org\",\n spender: \"0x6E2024Da220C081059f606D9EEAe670c84Ead9Ab\",\n token: \"0xbAcEa624831C5f294a5E7FeC519232AA37ec0a8C\",\n decimals: 18,\n defaultAmount: \"1000\",\n};\n","import { ethers } from \"ethers\";\nimport { SEPOLIA_CONFIG } from \"../utils/networks\";\n\nexport interface SepoliaApproveOptions {\n privateKey: string;\n unlimited?: boolean;\n amount?: string;\n decimalsOverride?: number;\n}\n\nexport async function sepoliaApprove(options: SepoliaApproveOptions) {\n const {\n privateKey,\n unlimited = true,\n amount,\n decimalsOverride,\n } = options;\n\n const cfg = SEPOLIA_CONFIG;\n\n const provider = new ethers.JsonRpcProvider(cfg.rpc);\n const wallet = new ethers.Wallet(privateKey, provider);\n\n const abi = [\n \"function approve(address spender, uint256 value) external returns (bool)\"\n ];\n\n const contract = new ethers.Contract(cfg.token, abi, wallet);\n\n const decimals = decimalsOverride ?? cfg.decimals;\n const humanAmount = amount ?? cfg.defaultAmount;\n\n const value = unlimited\n ? ethers.MaxUint256\n : ethers.parseUnits(humanAmount, decimals);\n\n console.log(\"⚡ Sepolia approve()\");\n console.log(\"RPC:\", cfg.rpc);\n console.log(\"Token:\", cfg.token);\n console.log(\"Spender:\", cfg.spender);\n console.log(\"Decimals:\", decimals);\n console.log(\"Amount:\", unlimited ? \"UNLIMITED\" : humanAmount);\n console.log(\"From:\", await wallet.getAddress());\n\n const tx = await contract.approve(cfg.spender, value);\n console.log(\"📤 TX:\", tx.hash);\n\n const receipt = await tx.wait();\n console.log(\"✅ Block:\", receipt.blockNumber);\n\n return { hash: tx.hash, receipt };\n}\n"],"mappings":"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","names":["index_exports","__export","MorambaClient","monadApprove","sepoliaApprove","__toCommonJS","import_axios","HttpClient","baseURL","headers","maxRetries","retryDelay","axios","response","error","config","delay","resolve","url","data","extraHeaders","res","AuthAPI","http","partnerId","apiKey","payload","fullBody","CompanyAPI","http","partnerId","apiKey","payload","jwtToken","fullBody","query","params","MorambaClient","config","HttpClient","AuthAPI","CompanyAPI","import_ethers","MONAD_CONFIG","SEPOLIA_CONFIG","monadApprove","options","privateKey","unlimited","amount","decimalsOverride","cfg","MONAD_CONFIG","provider","wallet","abi","contract","decimals","humanAmount","value","tx","receipt","import_ethers","sepoliaApprove","options","privateKey","unlimited","amount","decimalsOverride","cfg","SEPOLIA_CONFIG","provider","wallet","abi","contract","decimals","humanAmount","value","tx","receipt"]}
package/dist/index.mjs ADDED
@@ -0,0 +1,2 @@
1
+ import P from"axios";var u=class{constructor(e,t={},o=4,n=300){this.client=P.create({baseURL:e,headers:t,timeout:1e4}),this.maxRetries=o,this.retryDelay=n,this.setupRetryInterceptor()}get axiosInstance(){return this.client}setupRetryInterceptor(){this.client.interceptors.response.use(e=>e,async e=>{let t=e.config;if(!t||(t._retryCount||(t._retryCount=0),t._retryCount>=this.maxRetries))throw e;t._retryCount++;let o=this.retryDelay*Math.pow(2,t._retryCount);return await new Promise(n=>setTimeout(n,o)),this.client(t)})}post(e,t,o={}){return this.client.post(e,t,{headers:o}).then(n=>n.data)}patch(e,t,o={}){return this.client.patch(e,t,{headers:o}).then(n=>n.data)}get(e,t={}){return this.client.get(e,{headers:t}).then(o=>o.data)}};var y=class{constructor(e,t,o){this.http=e;this.partnerId=t;this.apiKey=o}createJwtToken(e){let t={...e,partner_id:this.partnerId,api_key:this.apiKey};return this.http.post("/api/v1/morambacypto/create/jwt_token",t)}};var h=class{constructor(e,t,o){this.http=e;this.partnerId=t;this.apiKey=o}createCompany(e,t){let o={...e,partner_id:this.partnerId,api_key:this.apiKey};return this.http.post("/api/v1/morambacypto/create/company",o,{Authorization:`Bearer ${t}`})}updateCompanyEmail(e,t){let o={...e,partner_id:this.partnerId,api_key:this.apiKey};return this.http.patch("/api/v1/morambacypto/update/company/email",o,{Authorization:`Bearer ${t}`})}getCompaniesByPartner(e,t={}){let o=new URLSearchParams;return t.limit&&o.append("limit",String(t.limit)),t.direction&&o.append("direction",t.direction),t.cursor&&o.append("cursor",t.cursor),this.http.get(`/api/v1/morambacypto/companies/partner/${this.partnerId}?${o.toString()}`,{Authorization:`Bearer ${e}`})}updateCompanyPaymentMethod(e,t){let o={...e,partner_id:this.partnerId,api_key:this.apiKey};return this.http.patch("/api/v1/morambacypto/update/company/payment",o,{Authorization:`Bearer ${t}`})}};var v=class{constructor(e){this.http=new u(e.baseURL,{"Content-Type":"application/json"}),this.auth=new y(this.http,e.partnerId,e.apiKey),this.company=new h(this.http,e.partnerId,e.apiKey)}};import{ethers as l}from"ethers";var x={rpc:"https://testnet-rpc.monad.xyz",spender:"0xbAcEa624831C5f294a5E7FeC519232AA37ec0a8C",token:"0x62F6c82114809C00a1293be02A43C05a3F917202",decimals:18,defaultAmount:"1000"},w={rpc:"https://rpc.sepolia.org",spender:"0x6E2024Da220C081059f606D9EEAe670c84Ead9Ab",token:"0xbAcEa624831C5f294a5E7FeC519232AA37ec0a8C",decimals:18,defaultAmount:"1000"};async function S(a){let{privateKey:e,unlimited:t=!0,amount:o,decimalsOverride:n}=a,r=x,g=new l.JsonRpcProvider(r.rpc),s=new l.Wallet(e,g),C=["function approve(address spender, uint256 value) external returns (bool)"],f=new l.Contract(r.token,C,s),p=n!=null?n:r.decimals,c=o!=null?o:r.defaultAmount,A=t?l.MaxUint256:l.parseUnits(c,p);console.log("\u26A1 Monad approve()"),console.log("RPC:",r.rpc),console.log("Token:",r.token),console.log("Spender:",r.spender),console.log("Decimals:",p),console.log("Amount:",t?"UNLIMITED":c),console.log("From:",await s.getAddress());let i=await f.approve(r.spender,A);console.log("\u{1F4E4} TX:",i.hash);let m=await i.wait();return console.log("\u2705 Block:",m.blockNumber),{hash:i.hash,receipt:m}}import{ethers as d}from"ethers";async function $(a){let{privateKey:e,unlimited:t=!0,amount:o,decimalsOverride:n}=a,r=w,g=new d.JsonRpcProvider(r.rpc),s=new d.Wallet(e,g),C=["function approve(address spender, uint256 value) external returns (bool)"],f=new d.Contract(r.token,C,s),p=n!=null?n:r.decimals,c=o!=null?o:r.defaultAmount,A=t?d.MaxUint256:d.parseUnits(c,p);console.log("\u26A1 Sepolia approve()"),console.log("RPC:",r.rpc),console.log("Token:",r.token),console.log("Spender:",r.spender),console.log("Decimals:",p),console.log("Amount:",t?"UNLIMITED":c),console.log("From:",await s.getAddress());let i=await f.approve(r.spender,A);console.log("\u{1F4E4} TX:",i.hash);let m=await i.wait();return console.log("\u2705 Block:",m.blockNumber),{hash:i.hash,receipt:m}}export{v as MorambaClient,S as monadApprove,$ as sepoliaApprove};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/client/HttpClient.ts","../src/apis/auth.api.ts","../src/apis/company.api.ts","../src/MorambaClient.ts","../src/authorize/monad.approve.ts","../src/utils/networks.ts","../src/authorize/sepolia.approve.ts"],"sourcesContent":["import axios, { AxiosInstance, AxiosError } from \"axios\";\n\nexport class HttpClient {\n private client: AxiosInstance;\n private maxRetries: number;\n private retryDelay: number; // base delay in milliseconds\n\n constructor(\n baseURL: string,\n headers: Record<string, string> = {},\n maxRetries = 4, // default: 4 retries\n retryDelay = 300 // base delay: 300ms\n ) {\n this.client = axios.create({\n baseURL,\n headers,\n timeout: 10000,\n });\n\n this.maxRetries = maxRetries;\n this.retryDelay = retryDelay;\n\n this.setupRetryInterceptor();\n }\n\n get axiosInstance(): AxiosInstance {\n return this.client;\n }\n\n private setupRetryInterceptor() {\n this.client.interceptors.response.use(\n response => response,\n async (error: AxiosError) => {\n const config: any = error.config;\n\n if (!config) throw error;\n\n // initialize retry counter\n if (!config._retryCount) config._retryCount = 0;\n\n // stop retry if max reached\n if (config._retryCount >= this.maxRetries) {\n throw error;\n }\n\n config._retryCount++;\n\n // exponential delay: delay * 2^(retryCount)\n const delay =\n this.retryDelay * Math.pow(2, config._retryCount);\n\n await new Promise(resolve => setTimeout(resolve, delay));\n\n return this.client(config);\n }\n );\n }\n post<T = any>(url: string, data: any, extraHeaders: Record<string, string> = {}): Promise<T> {\n return this.client\n .post<T>(url, data, { headers: extraHeaders })\n .then((res) => res.data);\n }\n patch<T = any>(\n url: string,\n data: any,\n extraHeaders: Record<string, string> = {}\n ): Promise<T> {\n return this.client\n .patch<T>(url, data, { headers: extraHeaders })\n .then((res) => res.data);\n }\n get<T = any>(url: string, extraHeaders: Record<string, string> = {}): Promise<T> {\n return this.client\n .get<T>(url, { headers: extraHeaders })\n .then((res) => res.data);\n }\n}\n","import { HttpClient } from \"../client/HttpClient\";\nimport {\n CreateJwtPayload,\n CreateJwtResponse,\n} from \"../types/auth.types\";\n\nexport class AuthAPI {\n constructor(\n private http: HttpClient,\n private partnerId: string,\n private apiKey: string\n ) { }\n\n createJwtToken(payload: CreateJwtPayload): Promise<CreateJwtResponse> {\n const fullBody = {\n ...payload, // { userid }\n partner_id: this.partnerId,\n api_key: this.apiKey,\n };\n\n\n return this.http.post(\"/api/v1/morambacypto/create/jwt_token\", fullBody);\n }\n}\n","import { HttpClient } from \"../client/HttpClient\";\nimport {\n CreateCompanyPayload,\n CreateCompanyResponse,\n UpdateCompanyEmailPayload,\n UpdateCompanyEmailResponse,\n GetCompaniesQuery,\n GetCompaniesResponse,\n UpdateCompanyPaymentPayload,\n UpdateCompanyPaymentResponse,\n} from \"../types/company.types\";\n\nexport class CompanyAPI {\n constructor(\n private http: HttpClient,\n private partnerId: string,\n private apiKey: string\n ) { }\n\n createCompany(payload: CreateCompanyPayload, jwtToken: string): Promise<CreateCompanyResponse> {\n const fullBody = {\n ...payload,\n partner_id: this.partnerId,\n api_key: this.apiKey,\n };\n\n return this.http.post(\n \"/api/v1/morambacypto/create/company\",\n fullBody,\n {\n Authorization: `Bearer ${jwtToken}`,\n }\n );\n }\n\n updateCompanyEmail(\n payload: UpdateCompanyEmailPayload,\n jwtToken: string\n ): Promise<UpdateCompanyEmailResponse> {\n const fullBody = {\n ...payload,\n partner_id: this.partnerId,\n api_key: this.apiKey,\n };\n\n return this.http.patch(\n \"/api/v1/morambacypto/update/company/email\",\n fullBody,\n {\n Authorization: `Bearer ${jwtToken}`,\n }\n );\n }\n getCompaniesByPartner(\n jwtToken: string,\n query: GetCompaniesQuery = {}\n ): Promise<GetCompaniesResponse> {\n const params = new URLSearchParams();\n\n if (query.limit) params.append(\"limit\", String(query.limit));\n if (query.direction) params.append(\"direction\", query.direction);\n if (query.cursor) params.append(\"cursor\", query.cursor);\n\n return this.http.get(\n `/api/v1/morambacypto/companies/partner/${this.partnerId}?${params.toString()}`,\n {\n Authorization: `Bearer ${jwtToken}`,\n }\n );\n }\n\n updateCompanyPaymentMethod(\n payload: UpdateCompanyPaymentPayload,\n jwtToken: string\n ): Promise<UpdateCompanyPaymentResponse> {\n const fullBody = {\n ...payload,\n partner_id: this.partnerId,\n api_key: this.apiKey,\n };\n\n return this.http.patch(\n \"/api/v1/morambacypto/update/company/payment\",\n fullBody,\n {\n Authorization: `Bearer ${jwtToken}`,\n }\n );\n }\n\n\n}\n","import { HttpClient } from \"./client/HttpClient\";\nimport { AuthAPI } from \"./apis/auth.api\";\nimport { CompanyAPI } from \"./apis/company.api\";\n\nexport interface MorambaClientConfig {\n baseURL: string;\n apiKey: string;\n partnerId: string;\n}\n\nexport class MorambaClient {\n public auth: AuthAPI;\n private http: HttpClient;\n public company: CompanyAPI;\n\n constructor(config: MorambaClientConfig) {\n this.http = new HttpClient(config.baseURL, {\n \"Content-Type\": \"application/json\",\n });\n\n this.auth = new AuthAPI(this.http, config.partnerId, config.apiKey);\n this.company = new CompanyAPI(this.http, config.partnerId, config.apiKey);\n }\n}\n","\nimport { ethers } from \"ethers\";\nimport { MONAD_CONFIG } from \"../utils/networks\";\n\nexport interface MonadApproveOptions {\n privateKey: string;\n unlimited?: boolean; // default: true\n amount?: string; // user-specified amount when limited\n decimalsOverride?: number; // optional override\n}\n\nexport async function monadApprove(options: MonadApproveOptions) {\n const {\n privateKey,\n unlimited = true,\n amount,\n decimalsOverride,\n } = options;\n\n const cfg = MONAD_CONFIG;\n\n const provider = new ethers.JsonRpcProvider(cfg.rpc);\n const wallet = new ethers.Wallet(privateKey, provider);\n\n const abi = [\n \"function approve(address spender, uint256 value) external returns (bool)\"\n ];\n\n const contract = new ethers.Contract(cfg.token, abi, wallet);\n\n const decimals = decimalsOverride ?? cfg.decimals;\n const humanAmount = amount ?? cfg.defaultAmount;\n\n const value = unlimited\n ? ethers.MaxUint256\n : ethers.parseUnits(humanAmount, decimals);\n\n console.log(\"⚡ Monad approve()\");\n console.log(\"RPC:\", cfg.rpc);\n console.log(\"Token:\", cfg.token);\n console.log(\"Spender:\", cfg.spender);\n console.log(\"Decimals:\", decimals);\n console.log(\"Amount:\", unlimited ? \"UNLIMITED\" : humanAmount);\n console.log(\"From:\", await wallet.getAddress());\n\n const tx = await contract.approve(cfg.spender, value);\n console.log(\"📤 TX:\", tx.hash);\n\n const receipt = await tx.wait();\n console.log(\"✅ Block:\", receipt.blockNumber);\n\n return { hash: tx.hash, receipt };\n}\n","\nexport interface TokenNetworkConfig {\n rpc: string;\n spender: string;\n token: string;\n decimals: number;\n defaultAmount: string;\n}\n\n// ▶️ MORAMBA Token (Monad)\nexport const MONAD_CONFIG: TokenNetworkConfig = {\n rpc: \"https://testnet-rpc.monad.xyz\",\n spender: \"0xbAcEa624831C5f294a5E7FeC519232AA37ec0a8C\",\n token: \"0x62F6c82114809C00a1293be02A43C05a3F917202\",\n decimals: 18,\n defaultAmount: \"1000\",\n};\n\n// ▶️ Sepolia \nexport const SEPOLIA_CONFIG: TokenNetworkConfig = {\n rpc: \"https://rpc.sepolia.org\",\n spender: \"0x6E2024Da220C081059f606D9EEAe670c84Ead9Ab\",\n token: \"0xbAcEa624831C5f294a5E7FeC519232AA37ec0a8C\",\n decimals: 18,\n defaultAmount: \"1000\",\n};\n","import { ethers } from \"ethers\";\nimport { SEPOLIA_CONFIG } from \"../utils/networks\";\n\nexport interface SepoliaApproveOptions {\n privateKey: string;\n unlimited?: boolean;\n amount?: string;\n decimalsOverride?: number;\n}\n\nexport async function sepoliaApprove(options: SepoliaApproveOptions) {\n const {\n privateKey,\n unlimited = true,\n amount,\n decimalsOverride,\n } = options;\n\n const cfg = SEPOLIA_CONFIG;\n\n const provider = new ethers.JsonRpcProvider(cfg.rpc);\n const wallet = new ethers.Wallet(privateKey, provider);\n\n const abi = [\n \"function approve(address spender, uint256 value) external returns (bool)\"\n ];\n\n const contract = new ethers.Contract(cfg.token, abi, wallet);\n\n const decimals = decimalsOverride ?? cfg.decimals;\n const humanAmount = amount ?? cfg.defaultAmount;\n\n const value = unlimited\n ? ethers.MaxUint256\n : ethers.parseUnits(humanAmount, decimals);\n\n console.log(\"⚡ Sepolia approve()\");\n console.log(\"RPC:\", cfg.rpc);\n console.log(\"Token:\", cfg.token);\n console.log(\"Spender:\", cfg.spender);\n console.log(\"Decimals:\", decimals);\n console.log(\"Amount:\", unlimited ? \"UNLIMITED\" : humanAmount);\n console.log(\"From:\", await wallet.getAddress());\n\n const tx = await contract.approve(cfg.spender, value);\n console.log(\"📤 TX:\", tx.hash);\n\n const receipt = await tx.wait();\n console.log(\"✅ Block:\", receipt.blockNumber);\n\n return { hash: tx.hash, receipt };\n}\n"],"mappings":"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","names":["axios","HttpClient","baseURL","headers","maxRetries","retryDelay","response","error","config","delay","resolve","url","data","extraHeaders","res","AuthAPI","http","partnerId","apiKey","payload","fullBody","CompanyAPI","http","partnerId","apiKey","payload","jwtToken","fullBody","query","params","MorambaClient","config","HttpClient","AuthAPI","CompanyAPI","ethers","MONAD_CONFIG","SEPOLIA_CONFIG","monadApprove","options","privateKey","unlimited","amount","decimalsOverride","cfg","MONAD_CONFIG","provider","ethers","wallet","abi","contract","decimals","humanAmount","value","tx","receipt","ethers","sepoliaApprove","options","privateKey","unlimited","amount","decimalsOverride","cfg","SEPOLIA_CONFIG","provider","ethers","wallet","abi","contract","decimals","humanAmount","value","tx","receipt"]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@morambacrypto/connect",
3
- "version": "0.0.13",
3
+ "version": "0.0.15",
4
4
  "description": "This library use for interact with moramba-crypto project",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
8
  "scripts": {
9
- "build": "tsc",
9
+ "build": "tsup",
10
10
  "clean": "rm -rf dist",
11
11
  "prepublishOnly": "npm run clean && npm run build",
12
12
  "test": "jest"
@@ -29,6 +29,7 @@
29
29
  "@types/jest": "^30.0.0",
30
30
  "axios-mock-adapter": "^2.1.0",
31
31
  "jest": "^30.2.0",
32
- "ts-jest": "^29.4.5"
32
+ "ts-jest": "^29.4.5",
33
+ "tsup": "^8.5.1"
33
34
  }
34
35
  }
@@ -1,13 +0,0 @@
1
- import { AuthAPI } from "./apis/auth.api";
2
- import { CompanyAPI } from "./apis/company.api";
3
- export interface MorambaClientConfig {
4
- baseURL: string;
5
- apiKey: string;
6
- partnerId: string;
7
- }
8
- export declare class MorambaClient {
9
- auth: AuthAPI;
10
- private http;
11
- company: CompanyAPI;
12
- constructor(config: MorambaClientConfig);
13
- }
@@ -1,12 +0,0 @@
1
- import { HttpClient } from "./client/HttpClient";
2
- import { AuthAPI } from "./apis/auth.api";
3
- import { CompanyAPI } from "./apis/company.api";
4
- export class MorambaClient {
5
- constructor(config) {
6
- this.http = new HttpClient(config.baseURL, {
7
- "Content-Type": "application/json",
8
- });
9
- this.auth = new AuthAPI(this.http, config.partnerId, config.apiKey);
10
- this.company = new CompanyAPI(this.http, config.partnerId, config.apiKey);
11
- }
12
- }
@@ -1,9 +0,0 @@
1
- import { HttpClient } from "../client/HttpClient";
2
- import { CreateJwtPayload, CreateJwtResponse } from "../types/auth.types";
3
- export declare class AuthAPI {
4
- private http;
5
- private partnerId;
6
- private apiKey;
7
- constructor(http: HttpClient, partnerId: string, apiKey: string);
8
- createJwtToken(payload: CreateJwtPayload): Promise<CreateJwtResponse>;
9
- }
@@ -1,15 +0,0 @@
1
- export class AuthAPI {
2
- constructor(http, partnerId, apiKey) {
3
- this.http = http;
4
- this.partnerId = partnerId;
5
- this.apiKey = apiKey;
6
- }
7
- createJwtToken(payload) {
8
- const fullBody = {
9
- ...payload, // { userid }
10
- partner_id: this.partnerId,
11
- api_key: this.apiKey,
12
- };
13
- return this.http.post("/api/v1/morambacypto/create/jwt_token", fullBody);
14
- }
15
- }
@@ -1,12 +0,0 @@
1
- import { HttpClient } from "../client/HttpClient";
2
- import { CreateCompanyPayload, CreateCompanyResponse, UpdateCompanyEmailPayload, UpdateCompanyEmailResponse, GetCompaniesQuery, GetCompaniesResponse, UpdateCompanyPaymentPayload, UpdateCompanyPaymentResponse } from "../types/company.types";
3
- export declare class CompanyAPI {
4
- private http;
5
- private partnerId;
6
- private apiKey;
7
- constructor(http: HttpClient, partnerId: string, apiKey: string);
8
- createCompany(payload: CreateCompanyPayload, jwtToken: string): Promise<CreateCompanyResponse>;
9
- updateCompanyEmail(payload: UpdateCompanyEmailPayload, jwtToken: string): Promise<UpdateCompanyEmailResponse>;
10
- getCompaniesByPartner(jwtToken: string, query?: GetCompaniesQuery): Promise<GetCompaniesResponse>;
11
- updateCompanyPaymentMethod(payload: UpdateCompanyPaymentPayload, jwtToken: string): Promise<UpdateCompanyPaymentResponse>;
12
- }
@@ -1,49 +0,0 @@
1
- export class CompanyAPI {
2
- constructor(http, partnerId, apiKey) {
3
- this.http = http;
4
- this.partnerId = partnerId;
5
- this.apiKey = apiKey;
6
- }
7
- createCompany(payload, jwtToken) {
8
- const fullBody = {
9
- ...payload,
10
- partner_id: this.partnerId,
11
- api_key: this.apiKey,
12
- };
13
- return this.http.post("/api/v1/morambacypto/create/company", fullBody, {
14
- Authorization: `Bearer ${jwtToken}`,
15
- });
16
- }
17
- updateCompanyEmail(payload, jwtToken) {
18
- const fullBody = {
19
- ...payload,
20
- partner_id: this.partnerId,
21
- api_key: this.apiKey,
22
- };
23
- return this.http.patch("/api/v1/morambacypto/update/company/email", fullBody, {
24
- Authorization: `Bearer ${jwtToken}`,
25
- });
26
- }
27
- getCompaniesByPartner(jwtToken, query = {}) {
28
- const params = new URLSearchParams();
29
- if (query.limit)
30
- params.append("limit", String(query.limit));
31
- if (query.direction)
32
- params.append("direction", query.direction);
33
- if (query.cursor)
34
- params.append("cursor", query.cursor);
35
- return this.http.get(`/api/v1/morambacypto/companies/partner/${this.partnerId}?${params.toString()}`, {
36
- Authorization: `Bearer ${jwtToken}`,
37
- });
38
- }
39
- updateCompanyPaymentMethod(payload, jwtToken) {
40
- const fullBody = {
41
- ...payload,
42
- partner_id: this.partnerId,
43
- api_key: this.apiKey,
44
- };
45
- return this.http.patch("/api/v1/morambacypto/update/company/payment", fullBody, {
46
- Authorization: `Bearer ${jwtToken}`,
47
- });
48
- }
49
- }
@@ -1,2 +0,0 @@
1
- export * from "./auth.api";
2
- export * from "./company.api";
@@ -1,2 +0,0 @@
1
- export * from "./auth.api";
2
- export * from "./company.api";
@@ -1,13 +0,0 @@
1
- import { AxiosInstance } from "axios";
2
- export declare class HttpClient {
3
- private client;
4
- private maxRetries;
5
- private retryDelay;
6
- constructor(baseURL: string, headers?: Record<string, string>, maxRetries?: number, // default: 4 retries
7
- retryDelay?: number);
8
- get axiosInstance(): AxiosInstance;
9
- private setupRetryInterceptor;
10
- post<T = any>(url: string, data: any, extraHeaders?: Record<string, string>): Promise<T>;
11
- patch<T = any>(url: string, data: any, extraHeaders?: Record<string, string>): Promise<T>;
12
- get<T = any>(url: string, extraHeaders?: Record<string, string>): Promise<T>;
13
- }
@@ -1,52 +0,0 @@
1
- import axios from "axios";
2
- export class HttpClient {
3
- constructor(baseURL, headers = {}, maxRetries = 4, // default: 4 retries
4
- retryDelay = 300 // base delay: 300ms
5
- ) {
6
- this.client = axios.create({
7
- baseURL,
8
- headers,
9
- timeout: 10000,
10
- });
11
- this.maxRetries = maxRetries;
12
- this.retryDelay = retryDelay;
13
- this.setupRetryInterceptor();
14
- }
15
- get axiosInstance() {
16
- return this.client;
17
- }
18
- setupRetryInterceptor() {
19
- this.client.interceptors.response.use(response => response, async (error) => {
20
- const config = error.config;
21
- if (!config)
22
- throw error;
23
- // initialize retry counter
24
- if (!config._retryCount)
25
- config._retryCount = 0;
26
- // stop retry if max reached
27
- if (config._retryCount >= this.maxRetries) {
28
- throw error;
29
- }
30
- config._retryCount++;
31
- // exponential delay: delay * 2^(retryCount)
32
- const delay = this.retryDelay * Math.pow(2, config._retryCount);
33
- await new Promise(resolve => setTimeout(resolve, delay));
34
- return this.client(config);
35
- });
36
- }
37
- post(url, data, extraHeaders = {}) {
38
- return this.client
39
- .post(url, data, { headers: extraHeaders })
40
- .then((res) => res.data);
41
- }
42
- patch(url, data, extraHeaders = {}) {
43
- return this.client
44
- .patch(url, data, { headers: extraHeaders })
45
- .then((res) => res.data);
46
- }
47
- get(url, extraHeaders = {}) {
48
- return this.client
49
- .get(url, { headers: extraHeaders })
50
- .then((res) => res.data);
51
- }
52
- }
@@ -1 +0,0 @@
1
- export * from "./HttpClient";
@@ -1 +0,0 @@
1
- export * from "./HttpClient";
@@ -1,2 +0,0 @@
1
- export * from "./monad.approve";
2
- export * from "./sepolia.approve";
@@ -1,2 +0,0 @@
1
- export * from "./monad.approve";
2
- export * from "./sepolia.approve";
@@ -1,10 +0,0 @@
1
- export interface MonadApproveOptions {
2
- privateKey: string;
3
- unlimited?: boolean;
4
- amount?: string;
5
- decimalsOverride?: number;
6
- }
7
- export declare function monadApprove(options: MonadApproveOptions): Promise<{
8
- hash: any;
9
- receipt: any;
10
- }>;
@@ -1,29 +0,0 @@
1
- import { ethers } from "ethers";
2
- import { MONAD_CONFIG } from "../utils/networks";
3
- export async function monadApprove(options) {
4
- const { privateKey, unlimited = true, amount, decimalsOverride, } = options;
5
- const cfg = MONAD_CONFIG;
6
- const provider = new ethers.JsonRpcProvider(cfg.rpc);
7
- const wallet = new ethers.Wallet(privateKey, provider);
8
- const abi = [
9
- "function approve(address spender, uint256 value) external returns (bool)"
10
- ];
11
- const contract = new ethers.Contract(cfg.token, abi, wallet);
12
- const decimals = decimalsOverride !== null && decimalsOverride !== void 0 ? decimalsOverride : cfg.decimals;
13
- const humanAmount = amount !== null && amount !== void 0 ? amount : cfg.defaultAmount;
14
- const value = unlimited
15
- ? ethers.MaxUint256
16
- : ethers.parseUnits(humanAmount, decimals);
17
- console.log("⚡ Monad approve()");
18
- console.log("RPC:", cfg.rpc);
19
- console.log("Token:", cfg.token);
20
- console.log("Spender:", cfg.spender);
21
- console.log("Decimals:", decimals);
22
- console.log("Amount:", unlimited ? "UNLIMITED" : humanAmount);
23
- console.log("From:", await wallet.getAddress());
24
- const tx = await contract.approve(cfg.spender, value);
25
- console.log("📤 TX:", tx.hash);
26
- const receipt = await tx.wait();
27
- console.log("✅ Block:", receipt.blockNumber);
28
- return { hash: tx.hash, receipt };
29
- }
@@ -1,10 +0,0 @@
1
- export interface SepoliaApproveOptions {
2
- privateKey: string;
3
- unlimited?: boolean;
4
- amount?: string;
5
- decimalsOverride?: number;
6
- }
7
- export declare function sepoliaApprove(options: SepoliaApproveOptions): Promise<{
8
- hash: any;
9
- receipt: any;
10
- }>;
@@ -1,29 +0,0 @@
1
- import { ethers } from "ethers";
2
- import { SEPOLIA_CONFIG } from "../utils/networks";
3
- export async function sepoliaApprove(options) {
4
- const { privateKey, unlimited = true, amount, decimalsOverride, } = options;
5
- const cfg = SEPOLIA_CONFIG;
6
- const provider = new ethers.JsonRpcProvider(cfg.rpc);
7
- const wallet = new ethers.Wallet(privateKey, provider);
8
- const abi = [
9
- "function approve(address spender, uint256 value) external returns (bool)"
10
- ];
11
- const contract = new ethers.Contract(cfg.token, abi, wallet);
12
- const decimals = decimalsOverride !== null && decimalsOverride !== void 0 ? decimalsOverride : cfg.decimals;
13
- const humanAmount = amount !== null && amount !== void 0 ? amount : cfg.defaultAmount;
14
- const value = unlimited
15
- ? ethers.MaxUint256
16
- : ethers.parseUnits(humanAmount, decimals);
17
- console.log("⚡ Sepolia approve()");
18
- console.log("RPC:", cfg.rpc);
19
- console.log("Token:", cfg.token);
20
- console.log("Spender:", cfg.spender);
21
- console.log("Decimals:", decimals);
22
- console.log("Amount:", unlimited ? "UNLIMITED" : humanAmount);
23
- console.log("From:", await wallet.getAddress());
24
- const tx = await contract.approve(cfg.spender, value);
25
- console.log("📤 TX:", tx.hash);
26
- const receipt = await tx.wait();
27
- console.log("✅ Block:", receipt.blockNumber);
28
- return { hash: tx.hash, receipt };
29
- }
@@ -1,11 +0,0 @@
1
- export interface CreateJwtPayload {
2
- userid: string;
3
- }
4
- export interface JwtTokenData {
5
- token: string;
6
- }
7
- export interface CreateJwtResponse {
8
- success: boolean;
9
- message: string;
10
- data: JwtTokenData;
11
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,77 +0,0 @@
1
- export interface PaymentMethod {
2
- network: string;
3
- token: string;
4
- address: string;
5
- }
6
- export interface CreateCompanyPayload {
7
- payment_method: PaymentMethod;
8
- name: string;
9
- email: string;
10
- }
11
- export interface CompanyData {
12
- id: string;
13
- name: string;
14
- email: string;
15
- partner_id: string;
16
- created_at: string;
17
- updated_at: string;
18
- }
19
- export interface CreateCompanyResponse {
20
- success: boolean;
21
- message: string;
22
- data: CompanyData | null;
23
- }
24
- export interface UpdateCompanyEmailPayload {
25
- company_id: string;
26
- email: string;
27
- }
28
- export interface UpdateCompanyEmailResponse {
29
- success: boolean;
30
- message: string;
31
- data: CompanyData | null;
32
- }
33
- export interface GetCompaniesQuery {
34
- limit?: number;
35
- direction?: "forward" | "backward";
36
- cursor?: string;
37
- }
38
- export interface CompanyListItem {
39
- id: string;
40
- name: string;
41
- email: string;
42
- partner_id: string;
43
- network: string;
44
- token: string;
45
- address: string;
46
- created_at: string;
47
- updated_at: string;
48
- }
49
- export interface PaginationData {
50
- has_next: boolean;
51
- has_previous: boolean;
52
- next_cursor: string;
53
- previous_cursor: string;
54
- limit: number;
55
- total_returned: number;
56
- }
57
- export interface GetCompaniesResponse {
58
- success: boolean;
59
- message: string;
60
- data: {
61
- companies: CompanyListItem[];
62
- pagination: PaginationData;
63
- };
64
- }
65
- export interface UpdateCompanyPaymentPayload {
66
- company_id: string;
67
- payment_method: {
68
- network: string;
69
- token: string;
70
- address: string;
71
- };
72
- }
73
- export interface UpdateCompanyPaymentResponse {
74
- success: boolean;
75
- message: string;
76
- data: CompanyData | null;
77
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,2 +0,0 @@
1
- export * from "./auth.types";
2
- export * from "./company.types";
@@ -1,2 +0,0 @@
1
- export * from "./auth.types";
2
- export * from "./company.types";
@@ -1,9 +0,0 @@
1
- export interface TokenNetworkConfig {
2
- rpc: string;
3
- spender: string;
4
- token: string;
5
- decimals: number;
6
- defaultAmount: string;
7
- }
8
- export declare const MONAD_CONFIG: TokenNetworkConfig;
9
- export declare const SEPOLIA_CONFIG: TokenNetworkConfig;
@@ -1,16 +0,0 @@
1
- // ▶️ MORAMBA Token (Monad)
2
- export const MONAD_CONFIG = {
3
- rpc: "https://testnet-rpc.monad.xyz",
4
- spender: "0xbAcEa624831C5f294a5E7FeC519232AA37ec0a8C",
5
- token: "0x62F6c82114809C00a1293be02A43C05a3F917202",
6
- decimals: 18,
7
- defaultAmount: "1000",
8
- };
9
- // ▶️ Sepolia
10
- export const SEPOLIA_CONFIG = {
11
- rpc: "https://rpc.sepolia.org",
12
- spender: "0x6E2024Da220C081059f606D9EEAe670c84Ead9Ab",
13
- token: "0xbAcEa624831C5f294a5E7FeC519232AA37ec0a8C",
14
- decimals: 18,
15
- defaultAmount: "1000",
16
- };