@explorins/pers-sdk 1.2.1 → 1.2.3

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 (39) hide show
  1. package/dist/auth-admin/api/auth-admin-api.d.ts.map +1 -1
  2. package/dist/auth-admin/index.d.ts +2 -2
  3. package/dist/auth-admin.cjs +2 -1
  4. package/dist/auth-admin.cjs.map +1 -1
  5. package/dist/auth-admin.js +2 -1
  6. package/dist/auth-admin.js.map +1 -1
  7. package/dist/business/index.d.ts +9 -9
  8. package/dist/campaign/index.d.ts +19 -19
  9. package/dist/donation/index.d.ts +1 -1
  10. package/dist/donation.cjs +1 -1
  11. package/dist/donation.cjs.map +1 -1
  12. package/dist/donation.js +1 -1
  13. package/dist/donation.js.map +1 -1
  14. package/dist/index.cjs +287 -43
  15. package/dist/index.cjs.map +1 -1
  16. package/dist/index.js +287 -43
  17. package/dist/index.js.map +1 -1
  18. package/dist/package.json +129 -129
  19. package/dist/payment/index.d.ts +6 -6
  20. package/dist/redemption/index.d.ts +10 -10
  21. package/dist/tenant/index.d.ts +4 -4
  22. package/dist/transaction/index.d.ts +8 -8
  23. package/dist/web3/index.d.ts +1 -2
  24. package/dist/web3/index.d.ts.map +1 -1
  25. package/dist/web3-chain/services/getWeb3FCD.service.d.ts +9 -0
  26. package/dist/web3-chain/services/getWeb3FCD.service.d.ts.map +1 -1
  27. package/dist/web3-chain/services/provider.service.d.ts +3 -5
  28. package/dist/web3-chain/services/provider.service.d.ts.map +1 -1
  29. package/dist/web3-chain/services/public-http-provider.service.d.ts +0 -7
  30. package/dist/web3-chain/services/public-http-provider.service.d.ts.map +1 -1
  31. package/dist/web3-chain.cjs +279 -40
  32. package/dist/web3-chain.cjs.map +1 -1
  33. package/dist/web3-chain.js +279 -40
  34. package/dist/web3-chain.js.map +1 -1
  35. package/dist/web3.cjs +371 -3
  36. package/dist/web3.cjs.map +1 -1
  37. package/dist/web3.js +371 -3
  38. package/dist/web3.js.map +1 -1
  39. package/package.json +129 -129
@@ -1 +1 @@
1
- {"version":3,"file":"auth-admin-api.d.ts","sourceRoot":"","sources":["../../../src/auth-admin/api/auth-admin-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAEL,sBAAsB,IAAI,oBAAoB,EAC9C,sBAAsB,IAAI,qBAAqB,EAChD,MAAM,oDAAoD,CAAC;AAE5D;;;;;;;;GAQG;AACH,qBAAa,YAAY;IACX,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,aAAa;IAE5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IAMpC;;;OAGG;IACG,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAKnE;;;OAGG;IACG,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAG9E"}
1
+ {"version":3,"file":"auth-admin-api.d.ts","sourceRoot":"","sources":["../../../src/auth-admin/api/auth-admin-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAEL,sBAAsB,IAAI,oBAAoB,EAC9C,sBAAsB,IAAI,qBAAqB,EAChD,MAAM,oDAAoD,CAAC;AAE5D;;;;;;;;GAQG;AACH,qBAAa,YAAY;IACX,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,aAAa;IAE5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IAMpC;;;OAGG;IACG,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAMnE;;;OAGG;IACG,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAG9E"}
@@ -17,8 +17,8 @@ import { AuthAdminService } from './services/auth-admin-service';
17
17
  * @returns Auth Admin SDK with flattened structure for better DX
18
18
  */
19
19
  export declare function createAuthAdminSDK(apiClient: PersApiClient): {
20
- loginTenantAdmin: (jwt: string) => Promise<import("@explorins/pers-shared/dist/cjs/dto/auth.dto").SessionAuthResponseDTO>;
21
- refreshAccessToken: (refreshToken: string) => Promise<import("@explorins/pers-shared/dist/cjs/dto/auth.dto").SessionAuthResponseDTO>;
20
+ loginTenantAdmin: (jwt: string) => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/auth.dto").SessionAuthResponseDTO>;
21
+ refreshAccessToken: (refreshToken: string) => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/auth.dto").SessionAuthResponseDTO>;
22
22
  api: AuthAdminApi;
23
23
  service: AuthAdminService;
24
24
  };
@@ -23,7 +23,8 @@ class AuthAdminApi {
23
23
  */
24
24
  async loginTenantAdmin(jwt) {
25
25
  // TODO: Implement proper JWT and bypass header handling when PersApiClient supports it
26
- return this.apiClient.post(`${this.basePath}/token`, {});
26
+ const requestBody = { authToken: jwt };
27
+ return this.apiClient.post(`${this.basePath}/token`, requestBody);
27
28
  }
28
29
  /**
29
30
  * ADMIN: Refresh access token
@@ -1 +1 @@
1
- {"version":3,"file":"auth-admin.cjs","sources":["../src/auth-admin/api/auth-admin-api.ts","../src/auth-admin/services/auth-admin-service.ts","../src/auth-admin/index.ts"],"sourcesContent":[null,null,null],"names":[],"mappings":";;AAOA;;;;;;;;AAQG;MACU,YAAY,CAAA;AACvB,IAAA,WAAA,CAAoB,SAAwB,EAAA;QAAxB,IAAA,CAAA,SAAS,GAAT,SAAS;QAEZ,IAAA,CAAA,QAAQ,GAAG,OAAO;IAFY;;;;AAQ/C;;;AAGG;IACH,MAAM,gBAAgB,CAAC,GAAW,EAAA;;AAEhC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAwB,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,MAAA,CAAQ,EAAE,EAAE,CAAC;IACjF;AAEA;;;AAGG;IACH,MAAM,kBAAkB,CAAC,YAAoB,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAuB,CAAA,EAAG,IAAI,CAAC,QAAQ,UAAU,EAAE,EAAE,YAAY,EAAE,CAAC;IAChG;AACD;;AClCD;;;;;;;AAOG;MACU,gBAAgB,CAAA;AAC3B,IAAA,WAAA,CAAoB,YAA0B,EAAA;QAA1B,IAAA,CAAA,YAAY,GAAZ,YAAY;IAAiB;;;;AAMjD;;AAEG;IACH,MAAM,gBAAgB,CAAC,GAAW,EAAA;QAChC,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,GAAG,CAAC;IAChD;AAEA;;AAEG;IACH,MAAM,kBAAkB,CAAC,YAAoB,EAAA;QAC3C,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,YAAY,CAAC;IAC3D;AACD;;ACnCD;;;;;AAKG;AAEH;AAgBA;;;;;AAKG;AACG,SAAU,kBAAkB,CAAC,SAAwB,EAAA;AACzD,IAAA,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC;AAChD,IAAA,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC;IAE3D,OAAO;;;QAIL,gBAAgB,EAAE,CAAC,GAAW,KAAK,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC;QACzE,kBAAkB,EAAE,CAAC,YAAoB,KAAK,gBAAgB,CAAC,kBAAkB,CAAC,YAAY,CAAC;;AAG/F,QAAA,GAAG,EAAE,YAAY;AACjB,QAAA,OAAO,EAAE;KACV;AACH;;;;;;"}
1
+ {"version":3,"file":"auth-admin.cjs","sources":["../src/auth-admin/api/auth-admin-api.ts","../src/auth-admin/services/auth-admin-service.ts","../src/auth-admin/index.ts"],"sourcesContent":[null,null,null],"names":[],"mappings":";;AAOA;;;;;;;;AAQG;MACU,YAAY,CAAA;AACvB,IAAA,WAAA,CAAoB,SAAwB,EAAA;QAAxB,IAAA,CAAA,SAAS,GAAT,SAAS;QAEZ,IAAA,CAAA,QAAQ,GAAG,OAAO;IAFY;;;;AAQ/C;;;AAGG;IACH,MAAM,gBAAgB,CAAC,GAAW,EAAA;;AAEhC,QAAA,MAAM,WAAW,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE;AACtC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAwB,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,MAAA,CAAQ,EAAE,WAAW,CAAC;IAC1F;AAEA;;;AAGG;IACH,MAAM,kBAAkB,CAAC,YAAoB,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAuB,CAAA,EAAG,IAAI,CAAC,QAAQ,UAAU,EAAE,EAAE,YAAY,EAAE,CAAC;IAChG;AACD;;ACnCD;;;;;;;AAOG;MACU,gBAAgB,CAAA;AAC3B,IAAA,WAAA,CAAoB,YAA0B,EAAA;QAA1B,IAAA,CAAA,YAAY,GAAZ,YAAY;IAAiB;;;;AAMjD;;AAEG;IACH,MAAM,gBAAgB,CAAC,GAAW,EAAA;QAChC,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,GAAG,CAAC;IAChD;AAEA;;AAEG;IACH,MAAM,kBAAkB,CAAC,YAAoB,EAAA;QAC3C,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,YAAY,CAAC;IAC3D;AACD;;ACnCD;;;;;AAKG;AAEH;AAgBA;;;;;AAKG;AACG,SAAU,kBAAkB,CAAC,SAAwB,EAAA;AACzD,IAAA,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC;AAChD,IAAA,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC;IAE3D,OAAO;;;QAIL,gBAAgB,EAAE,CAAC,GAAW,KAAK,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC;QACzE,kBAAkB,EAAE,CAAC,YAAoB,KAAK,gBAAgB,CAAC,kBAAkB,CAAC,YAAY,CAAC;;AAG/F,QAAA,GAAG,EAAE,YAAY;AACjB,QAAA,OAAO,EAAE;KACV;AACH;;;;;;"}
@@ -21,7 +21,8 @@ class AuthAdminApi {
21
21
  */
22
22
  async loginTenantAdmin(jwt) {
23
23
  // TODO: Implement proper JWT and bypass header handling when PersApiClient supports it
24
- return this.apiClient.post(`${this.basePath}/token`, {});
24
+ const requestBody = { authToken: jwt };
25
+ return this.apiClient.post(`${this.basePath}/token`, requestBody);
25
26
  }
26
27
  /**
27
28
  * ADMIN: Refresh access token
@@ -1 +1 @@
1
- {"version":3,"file":"auth-admin.js","sources":["../src/auth-admin/api/auth-admin-api.ts","../src/auth-admin/services/auth-admin-service.ts","../src/auth-admin/index.ts"],"sourcesContent":[null,null,null],"names":[],"mappings":"AAOA;;;;;;;;AAQG;MACU,YAAY,CAAA;AACvB,IAAA,WAAA,CAAoB,SAAwB,EAAA;QAAxB,IAAA,CAAA,SAAS,GAAT,SAAS;QAEZ,IAAA,CAAA,QAAQ,GAAG,OAAO;IAFY;;;;AAQ/C;;;AAGG;IACH,MAAM,gBAAgB,CAAC,GAAW,EAAA;;AAEhC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAwB,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,MAAA,CAAQ,EAAE,EAAE,CAAC;IACjF;AAEA;;;AAGG;IACH,MAAM,kBAAkB,CAAC,YAAoB,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAuB,CAAA,EAAG,IAAI,CAAC,QAAQ,UAAU,EAAE,EAAE,YAAY,EAAE,CAAC;IAChG;AACD;;AClCD;;;;;;;AAOG;MACU,gBAAgB,CAAA;AAC3B,IAAA,WAAA,CAAoB,YAA0B,EAAA;QAA1B,IAAA,CAAA,YAAY,GAAZ,YAAY;IAAiB;;;;AAMjD;;AAEG;IACH,MAAM,gBAAgB,CAAC,GAAW,EAAA;QAChC,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,GAAG,CAAC;IAChD;AAEA;;AAEG;IACH,MAAM,kBAAkB,CAAC,YAAoB,EAAA;QAC3C,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,YAAY,CAAC;IAC3D;AACD;;ACnCD;;;;;AAKG;AAEH;AAgBA;;;;;AAKG;AACG,SAAU,kBAAkB,CAAC,SAAwB,EAAA;AACzD,IAAA,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC;AAChD,IAAA,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC;IAE3D,OAAO;;;QAIL,gBAAgB,EAAE,CAAC,GAAW,KAAK,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC;QACzE,kBAAkB,EAAE,CAAC,YAAoB,KAAK,gBAAgB,CAAC,kBAAkB,CAAC,YAAY,CAAC;;AAG/F,QAAA,GAAG,EAAE,YAAY;AACjB,QAAA,OAAO,EAAE;KACV;AACH;;;;"}
1
+ {"version":3,"file":"auth-admin.js","sources":["../src/auth-admin/api/auth-admin-api.ts","../src/auth-admin/services/auth-admin-service.ts","../src/auth-admin/index.ts"],"sourcesContent":[null,null,null],"names":[],"mappings":"AAOA;;;;;;;;AAQG;MACU,YAAY,CAAA;AACvB,IAAA,WAAA,CAAoB,SAAwB,EAAA;QAAxB,IAAA,CAAA,SAAS,GAAT,SAAS;QAEZ,IAAA,CAAA,QAAQ,GAAG,OAAO;IAFY;;;;AAQ/C;;;AAGG;IACH,MAAM,gBAAgB,CAAC,GAAW,EAAA;;AAEhC,QAAA,MAAM,WAAW,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE;AACtC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAwB,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,MAAA,CAAQ,EAAE,WAAW,CAAC;IAC1F;AAEA;;;AAGG;IACH,MAAM,kBAAkB,CAAC,YAAoB,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAuB,CAAA,EAAG,IAAI,CAAC,QAAQ,UAAU,EAAE,EAAE,YAAY,EAAE,CAAC;IAChG;AACD;;ACnCD;;;;;;;AAOG;MACU,gBAAgB,CAAA;AAC3B,IAAA,WAAA,CAAoB,YAA0B,EAAA;QAA1B,IAAA,CAAA,YAAY,GAAZ,YAAY;IAAiB;;;;AAMjD;;AAEG;IACH,MAAM,gBAAgB,CAAC,GAAW,EAAA;QAChC,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,GAAG,CAAC;IAChD;AAEA;;AAEG;IACH,MAAM,kBAAkB,CAAC,YAAoB,EAAA;QAC3C,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,YAAY,CAAC;IAC3D;AACD;;ACnCD;;;;;AAKG;AAEH;AAgBA;;;;;AAKG;AACG,SAAU,kBAAkB,CAAC,SAAwB,EAAA;AACzD,IAAA,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC;AAChD,IAAA,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC;IAE3D,OAAO;;;QAIL,gBAAgB,EAAE,CAAC,GAAW,KAAK,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC;QACzE,kBAAkB,EAAE,CAAC,YAAoB,KAAK,gBAAgB,CAAC,kBAAkB,CAAC,YAAY,CAAC;;AAG/F,QAAA,GAAG,EAAE,YAAY;AACjB,QAAA,OAAO,EAAE;KACV;AACH;;;;"}
@@ -18,15 +18,15 @@ import { BusinessService } from './services/business-service';
18
18
  * @returns Business SDK with flattened structure for better DX
19
19
  */
20
20
  export declare function createBusinessSDK(apiClient: PersApiClient): {
21
- getActiveBusinesses: () => Promise<import("@explorins/pers-shared/dist/cjs/dto/business/business.dto").BusinessDTO[]>;
22
- getAllBusinessTypes: () => Promise<import("@explorins/pers-shared/dist/cjs/dto/business/business-type.dto").BusinessTypeDTO[]>;
23
- getBusinessById: (businessId: string) => Promise<import("@explorins/pers-shared/dist/cjs/dto/business/business.dto").BusinessDTO>;
24
- getBusinessByAccount: (accountAddress: string) => Promise<import("@explorins/pers-shared/dist/cjs/dto/business/business.dto").BusinessDTO>;
25
- getBusinessesByType: (typeId: string) => Promise<import("@explorins/pers-shared/dist/cjs/dto/business/business.dto").BusinessDTO[]>;
26
- getAllBusinesses: () => Promise<import("@explorins/pers-shared/dist/cjs/dto/business/business.dto").BusinessDTO[]>;
27
- createBusinessByDisplayName: (displayName: string) => Promise<import("@explorins/pers-shared/dist/cjs/dto/business/business.dto").BusinessDTO>;
28
- updateBusiness: (id: string, businessData: BusinessUpdateRequestDTO) => Promise<import("@explorins/pers-shared/dist/cjs/dto/business/business.dto").BusinessDTO>;
29
- toggleBusinessActive: (id: string, isActive: boolean) => Promise<import("@explorins/pers-shared/dist/cjs/dto/business/business.dto").BusinessDTO>;
21
+ getActiveBusinesses: () => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/business/business.dto").BusinessDTO[]>;
22
+ getAllBusinessTypes: () => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/business/business-type.dto").BusinessTypeDTO[]>;
23
+ getBusinessById: (businessId: string) => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/business/business.dto").BusinessDTO>;
24
+ getBusinessByAccount: (accountAddress: string) => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/business/business.dto").BusinessDTO>;
25
+ getBusinessesByType: (typeId: string) => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/business/business.dto").BusinessDTO[]>;
26
+ getAllBusinesses: () => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/business/business.dto").BusinessDTO[]>;
27
+ createBusinessByDisplayName: (displayName: string) => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/business/business.dto").BusinessDTO>;
28
+ updateBusiness: (id: string, businessData: BusinessUpdateRequestDTO) => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/business/business.dto").BusinessDTO>;
29
+ toggleBusinessActive: (id: string, isActive: boolean) => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/business/business.dto").BusinessDTO>;
30
30
  api: BusinessApi;
31
31
  service: BusinessService;
32
32
  };
@@ -18,25 +18,25 @@ import { CampaignClaimRequestDTO, CampaignCreateRequestDTO, TokenUnitCreateReque
18
18
  * @returns Campaign SDK with flattened structure for better DX
19
19
  */
20
20
  export declare function createCampaignSDK(apiClient: PersApiClient): {
21
- getActiveCampaigns: () => Promise<import("@explorins/pers-shared/dist/cjs/dto/campaign/campaign.dto").CampaignDTO[]>;
22
- getCampaignById: (id: string) => Promise<import("@explorins/pers-shared/dist/cjs/dto/campaign/campaign.dto").CampaignDTO>;
23
- claimCampaign: (request: CampaignClaimRequestDTO) => Promise<import("@explorins/pers-shared/dist/cjs/dto/campaign/campaignUserClaim.dto").CampaignUserClaimDTO>;
24
- getClaimsForLoggedUser: () => Promise<import("@explorins/pers-shared/dist/cjs/dto/campaign/campaignUserClaim.dto").CampaignUserClaimDTO[]>;
25
- getCampaigns: (active?: boolean) => Promise<import("@explorins/pers-shared/dist/cjs/dto/campaign/campaign.dto").CampaignDTO[]>;
26
- getCampaignTriggers: () => Promise<import("@explorins/pers-shared/dist/cjs/dto/campaign/campaignTrigger.dto").CampaignTriggerDTO[]>;
27
- toggleCampaignActive: (campaignId: string) => Promise<import("@explorins/pers-shared/dist/cjs/dto/campaign/campaign.dto").CampaignDTO>;
28
- toggleCampaignTestnet: (campaignId: string) => Promise<import("@explorins/pers-shared/dist/cjs/dto/campaign/campaign.dto").CampaignDTO>;
29
- createCampaign: (campaign: CampaignCreateRequestDTO) => Promise<import("@explorins/pers-shared/dist/cjs/dto/campaign/campaign.dto").CampaignDTO>;
30
- setCampaignTrigger: (campaignId: string, triggerId: string) => Promise<import("@explorins/pers-shared/dist/cjs/dto/campaign/campaign.dto").CampaignDTO>;
31
- updateCampaign: (campaignId: string, campaign: CampaignCreateRequestDTO) => Promise<import("@explorins/pers-shared/dist/cjs/dto/campaign/campaign.dto").CampaignDTO>;
32
- createCampaignTokenUnit: (campaignId: string, campaignTokenUnit: TokenUnitCreateRequestDTO) => Promise<import("@explorins/pers-shared/dist/cjs/dto/campaign/campaign.dto").CampaignDTO>;
33
- deleteCampaignTokenUnit: (campaignId: string, campaignTokenUnitId: string) => Promise<import("@explorins/pers-shared/dist/cjs/dto/campaign/campaign.dto").CampaignDTO>;
34
- addBusinessEngagementToCampaign: (campaignId: string, campaignBusinessEngagement: CampaignBusinessEngagementCreateRequestDTO) => Promise<import("@explorins/pers-shared/dist/cjs/dto/campaign/campaign.dto").CampaignDTO>;
35
- updateCampaignBusinessEngagement: (campaignId: string, businessEngagementId: string, campaignBusinessEngagement: CampaignBusinessEngagementCreateRequestDTO) => Promise<import("@explorins/pers-shared/dist/cjs/dto/campaign/campaign.dto").CampaignDTO>;
36
- deleteCampaignBusinessEngagement: (campaignId: string, businessEngagementId: string) => Promise<import("@explorins/pers-shared/dist/cjs/dto/campaign/campaign.dto").CampaignDTO>;
37
- getCampaignClaims: () => Promise<import("@explorins/pers-shared/dist/cjs/dto/campaign/campaignUserClaim.dto").CampaignUserClaimDTO[]>;
38
- getCampaignClaimsByUserId: (userId: string) => Promise<import("@explorins/pers-shared/dist/cjs/dto/campaign/campaignUserClaim.dto").CampaignUserClaimDTO[]>;
39
- getCampaignClaimsByBusinessId: (businessId: string) => Promise<import("@explorins/pers-shared/dist/cjs/dto/campaign/campaignUserClaim.dto").CampaignUserClaimDTO[]>;
21
+ getActiveCampaigns: () => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/campaign/campaign.dto").CampaignDTO[]>;
22
+ getCampaignById: (id: string) => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/campaign/campaign.dto").CampaignDTO>;
23
+ claimCampaign: (request: CampaignClaimRequestDTO) => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/campaign/campaignUserClaim.dto").CampaignUserClaimDTO>;
24
+ getClaimsForLoggedUser: () => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/campaign/campaignUserClaim.dto").CampaignUserClaimDTO[]>;
25
+ getCampaigns: (active?: boolean) => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/campaign/campaign.dto").CampaignDTO[]>;
26
+ getCampaignTriggers: () => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/campaign/campaignTrigger.dto").CampaignTriggerDTO[]>;
27
+ toggleCampaignActive: (campaignId: string) => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/campaign/campaign.dto").CampaignDTO>;
28
+ toggleCampaignTestnet: (campaignId: string) => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/campaign/campaign.dto").CampaignDTO>;
29
+ createCampaign: (campaign: CampaignCreateRequestDTO) => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/campaign/campaign.dto").CampaignDTO>;
30
+ setCampaignTrigger: (campaignId: string, triggerId: string) => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/campaign/campaign.dto").CampaignDTO>;
31
+ updateCampaign: (campaignId: string, campaign: CampaignCreateRequestDTO) => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/campaign/campaign.dto").CampaignDTO>;
32
+ createCampaignTokenUnit: (campaignId: string, campaignTokenUnit: TokenUnitCreateRequestDTO) => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/campaign/campaign.dto").CampaignDTO>;
33
+ deleteCampaignTokenUnit: (campaignId: string, campaignTokenUnitId: string) => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/campaign/campaign.dto").CampaignDTO>;
34
+ addBusinessEngagementToCampaign: (campaignId: string, campaignBusinessEngagement: CampaignBusinessEngagementCreateRequestDTO) => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/campaign/campaign.dto").CampaignDTO>;
35
+ updateCampaignBusinessEngagement: (campaignId: string, businessEngagementId: string, campaignBusinessEngagement: CampaignBusinessEngagementCreateRequestDTO) => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/campaign/campaign.dto").CampaignDTO>;
36
+ deleteCampaignBusinessEngagement: (campaignId: string, businessEngagementId: string) => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/campaign/campaign.dto").CampaignDTO>;
37
+ getCampaignClaims: () => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/campaign/campaignUserClaim.dto").CampaignUserClaimDTO[]>;
38
+ getCampaignClaimsByUserId: (userId: string) => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/campaign/campaignUserClaim.dto").CampaignUserClaimDTO[]>;
39
+ getCampaignClaimsByBusinessId: (businessId: string) => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/campaign/campaignUserClaim.dto").CampaignUserClaimDTO[]>;
40
40
  api: CampaignApi;
41
41
  service: CampaignService;
42
42
  };
@@ -17,7 +17,7 @@ import { DonationService } from './services/donation-service';
17
17
  * @returns Donation SDK with flattened structure for better DX
18
18
  */
19
19
  export declare function createDonationSDK(apiClient: PersApiClient): {
20
- getAllDonationTypes: () => Promise<import("@explorins/pers-shared/dist/cjs/dto/purchase/donationType.dto").DonationTypeDTO[]>;
20
+ getAllDonationTypes: () => Promise<import("@explorins/pers-shared/dist/cjs/shared-lib/dto/purchase/donationType.dto").DonationTypeDTO[]>;
21
21
  api: DonationApi;
22
22
  service: DonationService;
23
23
  };
package/dist/donation.cjs CHANGED
@@ -18,7 +18,7 @@ class DonationApi {
18
18
  * ✅ ONLY method actually used by framework
19
19
  */
20
20
  async getAllDonationTypes() {
21
- return this.apiClient.get('/purchase/donation/type');
21
+ return this.apiClient.get('/purchases/donation-types');
22
22
  }
23
23
  }
24
24
 
@@ -1 +1 @@
1
- {"version":3,"file":"donation.cjs","sources":["../src/donation/api/donation-api.ts","../src/donation/services/donation-service.ts","../src/donation/index.ts"],"sourcesContent":[null,null,null],"names":[],"mappings":";;AAGA;;;;;AAKG;MACU,WAAW,CAAA;AACtB,IAAA,WAAA,CAAoB,SAAwB,EAAA;QAAxB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAkB;;;;AAM/C;;;AAGG;AACH,IAAA,MAAM,mBAAmB,GAAA;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAoB,yBAAyB,CAAC;IACzE;AACD;;ACpBD;;;;;;AAMG;MACU,eAAe,CAAA;AAC1B,IAAA,WAAA,CAAoB,WAAwB,EAAA;QAAxB,IAAA,CAAA,WAAW,GAAX,WAAW;IAAgB;;;;AAM/C;;;AAGG;AACH,IAAA,MAAM,mBAAmB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE;IAC/C;AACD;;ACxBD;;;;;AAKG;AAEH;AAgBA;;;;;AAKG;AACG,SAAU,iBAAiB,CAAC,SAAwB,EAAA;AACxD,IAAA,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC;AAC9C,IAAA,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC;IAExD,OAAO;;;;AAKL,QAAA,mBAAmB,EAAE,MAAM,eAAe,CAAC,mBAAmB,EAAE;;AAGhE,QAAA,GAAG,EAAE,WAAW;AAChB,QAAA,OAAO,EAAE;KACV;AACH;;;;;;"}
1
+ {"version":3,"file":"donation.cjs","sources":["../src/donation/api/donation-api.ts","../src/donation/services/donation-service.ts","../src/donation/index.ts"],"sourcesContent":[null,null,null],"names":[],"mappings":";;AAGA;;;;;AAKG;MACU,WAAW,CAAA;AACtB,IAAA,WAAA,CAAoB,SAAwB,EAAA;QAAxB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAkB;;;;AAM/C;;;AAGG;AACH,IAAA,MAAM,mBAAmB,GAAA;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAoB,2BAA2B,CAAC;IAC3E;AACD;;ACpBD;;;;;;AAMG;MACU,eAAe,CAAA;AAC1B,IAAA,WAAA,CAAoB,WAAwB,EAAA;QAAxB,IAAA,CAAA,WAAW,GAAX,WAAW;IAAgB;;;;AAM/C;;;AAGG;AACH,IAAA,MAAM,mBAAmB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE;IAC/C;AACD;;ACxBD;;;;;AAKG;AAEH;AAgBA;;;;;AAKG;AACG,SAAU,iBAAiB,CAAC,SAAwB,EAAA;AACxD,IAAA,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC;AAC9C,IAAA,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC;IAExD,OAAO;;;;AAKL,QAAA,mBAAmB,EAAE,MAAM,eAAe,CAAC,mBAAmB,EAAE;;AAGhE,QAAA,GAAG,EAAE,WAAW;AAChB,QAAA,OAAO,EAAE;KACV;AACH;;;;;;"}
package/dist/donation.js CHANGED
@@ -16,7 +16,7 @@ class DonationApi {
16
16
  * ✅ ONLY method actually used by framework
17
17
  */
18
18
  async getAllDonationTypes() {
19
- return this.apiClient.get('/purchase/donation/type');
19
+ return this.apiClient.get('/purchases/donation-types');
20
20
  }
21
21
  }
22
22
 
@@ -1 +1 @@
1
- {"version":3,"file":"donation.js","sources":["../src/donation/api/donation-api.ts","../src/donation/services/donation-service.ts","../src/donation/index.ts"],"sourcesContent":[null,null,null],"names":[],"mappings":"AAGA;;;;;AAKG;MACU,WAAW,CAAA;AACtB,IAAA,WAAA,CAAoB,SAAwB,EAAA;QAAxB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAkB;;;;AAM/C;;;AAGG;AACH,IAAA,MAAM,mBAAmB,GAAA;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAoB,yBAAyB,CAAC;IACzE;AACD;;ACpBD;;;;;;AAMG;MACU,eAAe,CAAA;AAC1B,IAAA,WAAA,CAAoB,WAAwB,EAAA;QAAxB,IAAA,CAAA,WAAW,GAAX,WAAW;IAAgB;;;;AAM/C;;;AAGG;AACH,IAAA,MAAM,mBAAmB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE;IAC/C;AACD;;ACxBD;;;;;AAKG;AAEH;AAgBA;;;;;AAKG;AACG,SAAU,iBAAiB,CAAC,SAAwB,EAAA;AACxD,IAAA,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC;AAC9C,IAAA,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC;IAExD,OAAO;;;;AAKL,QAAA,mBAAmB,EAAE,MAAM,eAAe,CAAC,mBAAmB,EAAE;;AAGhE,QAAA,GAAG,EAAE,WAAW;AAChB,QAAA,OAAO,EAAE;KACV;AACH;;;;"}
1
+ {"version":3,"file":"donation.js","sources":["../src/donation/api/donation-api.ts","../src/donation/services/donation-service.ts","../src/donation/index.ts"],"sourcesContent":[null,null,null],"names":[],"mappings":"AAGA;;;;;AAKG;MACU,WAAW,CAAA;AACtB,IAAA,WAAA,CAAoB,SAAwB,EAAA;QAAxB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAkB;;;;AAM/C;;;AAGG;AACH,IAAA,MAAM,mBAAmB,GAAA;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAoB,2BAA2B,CAAC;IAC3E;AACD;;ACpBD;;;;;;AAMG;MACU,eAAe,CAAA;AAC1B,IAAA,WAAA,CAAoB,WAAwB,EAAA;QAAxB,IAAA,CAAA,WAAW,GAAX,WAAW;IAAgB;;;;AAM/C;;;AAGG;AACH,IAAA,MAAM,mBAAmB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE;IAC/C;AACD;;ACxBD;;;;;AAKG;AAEH;AAgBA;;;;;AAKG;AACG,SAAU,iBAAiB,CAAC,SAAwB,EAAA;AACxD,IAAA,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC;AAC9C,IAAA,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC;IAExD,OAAO;;;;AAKL,QAAA,mBAAmB,EAAE,MAAM,eAAe,CAAC,mBAAmB,EAAE;;AAGhE,QAAA,GAAG,EAAE,WAAW;AAChB,QAAA,OAAO,EAAE;KACV;AACH;;;;"}
package/dist/index.cjs CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  var jwtDecode = require('jwt-decode');
4
4
  var Web3 = require('web3');
5
- var web3Ts = require('@explorins/web3-ts');
6
5
  var ethers = require('ethers');
6
+ var web3Ts = require('@explorins/web3-ts');
7
7
 
8
8
  /**
9
9
  * PERS SDK Configuration interfaces
@@ -1278,7 +1278,8 @@ class AuthAdminApi {
1278
1278
  */
1279
1279
  async loginTenantAdmin(jwt) {
1280
1280
  // TODO: Implement proper JWT and bypass header handling when PersApiClient supports it
1281
- return this.apiClient.post(`${this.basePath}/token`, {});
1281
+ const requestBody = { authToken: jwt };
1282
+ return this.apiClient.post(`${this.basePath}/token`, requestBody);
1282
1283
  }
1283
1284
  /**
1284
1285
  * ADMIN: Refresh access token
@@ -1863,7 +1864,7 @@ class DonationApi {
1863
1864
  * ✅ ONLY method actually used by framework
1864
1865
  */
1865
1866
  async getAllDonationTypes() {
1866
- return this.apiClient.get('/purchase/donation/type');
1867
+ return this.apiClient.get('/purchases/donation-types');
1867
1868
  }
1868
1869
  }
1869
1870
 
@@ -3675,79 +3676,197 @@ class Web3ChainService {
3675
3676
  }
3676
3677
  }
3677
3678
 
3678
- //IMPORTANT//
3679
- //This function is temporary so we install ethers just to make it work, once we delete this function we must uninstall Ethers
3679
+ // ✅ REVERT: Función síncrona como el código comentado que funciona
3680
3680
  const getWeb3ProviderFromChainData = (chainData, timeout = 15000, customUserAgentName = '', tokenRefresher) => {
3681
- // Fixed ethers provider setup for authenticated requests
3681
+ console.log(`🔧 [getWeb3FCD] Creating provider for chain ${chainData.chainId || 'unknown'}`);
3682
3682
  let ethersProvider;
3683
3683
  if (chainData.authHeader) {
3684
- // For authenticated requests, create a custom FetchRequest
3684
+ // AUTHENTICATED: For private chains
3685
3685
  const fetchRequest = new ethers.FetchRequest(chainData.rpcUrl);
3686
3686
  fetchRequest.timeout = timeout;
3687
- fetchRequest.setHeader('Authorization', chainData.authHeader);
3687
+ // ✅ IMPROVED AUTH HEADER: Better handling
3688
+ const authValue = chainData.authHeader.startsWith('Bearer ')
3689
+ ? chainData.authHeader
3690
+ : `Bearer ${chainData.authHeader}`;
3691
+ fetchRequest.setHeader('Authorization', authValue);
3688
3692
  fetchRequest.setHeader('Content-Type', 'application/json');
3693
+ fetchRequest.setHeader('Accept', 'application/json');
3689
3694
  if (customUserAgentName) {
3690
3695
  fetchRequest.setHeader('User-Agent', customUserAgentName);
3691
3696
  }
3692
- // Create provider with the configured FetchRequest
3693
3697
  ethersProvider = new ethers.JsonRpcProvider(fetchRequest, undefined, {
3694
3698
  staticNetwork: false,
3695
- polling: false, // Disable polling for better Lambda performance
3699
+ polling: false,
3700
+ batchMaxCount: 1, // ✅ DISABLE BATCHING: Better for private chains
3696
3701
  });
3697
3702
  }
3698
3703
  else {
3699
- // For public chains, use simple URL-based provider
3704
+ // ✅ PUBLIC: For public chains
3700
3705
  ethersProvider = new ethers.JsonRpcProvider(chainData.rpcUrl, undefined, {
3701
3706
  staticNetwork: false,
3702
3707
  polling: false,
3703
3708
  });
3704
3709
  }
3710
+ console.log(`✅ [getWeb3FCD] Provider created successfully`);
3705
3711
  return {
3706
3712
  web3Provider: null,
3707
3713
  ethersProvider: ethersProvider,
3708
3714
  isAuthenticated: !!chainData.authHeader,
3709
3715
  };
3710
3716
  };
3717
+ // ✅ NEW: Async wrapper with retry for higher-level usage
3718
+ const getWeb3ProviderWithRetry = async (chainData, timeout = 15000, customUserAgentName = '', tokenRefresher, retryConfig = { maxAttempts: 3, baseDelay: 1000, maxDelay: 8000 }) => {
3719
+ let lastError = null;
3720
+ for (let attempt = 1; attempt <= retryConfig.maxAttempts; attempt++) {
3721
+ try {
3722
+ console.log(`🔄 [Web3Provider] Attempt ${attempt}/${retryConfig.maxAttempts} for chain ${chainData.chainId || 'unknown'}`);
3723
+ // ✅ SYNC CALL: Use the original sync function
3724
+ const provider = getWeb3ProviderFromChainData(chainData, timeout, customUserAgentName, tokenRefresher);
3725
+ await validateChainConnection(provider.ethersProvider, chainData.authHeader ? 'private' : 'public');
3726
+ console.log(`✅ [Web3Provider] Successfully connected on attempt ${attempt}`);
3727
+ return provider;
3728
+ }
3729
+ catch (error) {
3730
+ lastError = error instanceof Error ? error : new Error(String(error));
3731
+ console.warn(`⚠️ [Web3Provider] Attempt ${attempt} failed:`, lastError.message);
3732
+ // ✅ NO RETRY: if auth error, no retry
3733
+ if (isAuthError(lastError) && chainData.authHeader) {
3734
+ console.error(`❌ [Web3Provider] Auth error, stopping retries`);
3735
+ break;
3736
+ }
3737
+ if (attempt === retryConfig.maxAttempts)
3738
+ break;
3739
+ const delay = Math.min(retryConfig.baseDelay * Math.pow(2, attempt - 1), retryConfig.maxDelay);
3740
+ console.log(`⏳ [Web3Provider] Retrying in ${delay}ms...`);
3741
+ await sleep(delay);
3742
+ }
3743
+ }
3744
+ throw new Error(`Failed to create Web3 provider after ${retryConfig.maxAttempts} attempts. Last error: ${lastError?.message}`);
3745
+ };
3746
+ async function validateChainConnection(provider, chainType) {
3747
+ try {
3748
+ console.log(`🔍 [Validation] Testing ${chainType} chain connection...`);
3749
+ // ✅ LIGHTWEIGHT TEST: Use eth_chainId (works for both public and private)
3750
+ const timeoutPromise = new Promise((_, reject) => {
3751
+ setTimeout(() => reject(new Error(`${chainType} chain validation timeout`)), 3000);
3752
+ });
3753
+ // Try chainId first (fast, lightweight, universal)
3754
+ const chainIdPromise = provider.send('eth_chainId', []);
3755
+ const result = await Promise.race([chainIdPromise, timeoutPromise]);
3756
+ console.log(`✅ [Validation] ${chainType} chain connection validated - Chain ID: ${result}`);
3757
+ }
3758
+ catch (error) {
3759
+ // ✅ FALLBACK: Try net_version if chainId fails
3760
+ try {
3761
+ console.log(`🔄 [Validation] Trying fallback validation for ${chainType} chain...`);
3762
+ const timeoutPromise = new Promise((_, reject) => {
3763
+ setTimeout(() => reject(new Error(`${chainType} chain fallback validation timeout`)), 3000);
3764
+ });
3765
+ const versionPromise = provider.send('net_version', []);
3766
+ const result = await Promise.race([versionPromise, timeoutPromise]);
3767
+ console.log(`✅ [Validation] ${chainType} chain connection validated via fallback - Network Version: ${result}`);
3768
+ }
3769
+ catch (fallbackError) {
3770
+ throw new Error(`${chainType} chain validation failed: ${error instanceof Error ? error.message : String(error)}`);
3771
+ }
3772
+ }
3773
+ }
3774
+ // ✅ HELPER: Auth error detection
3775
+ function isAuthError(error) {
3776
+ const message = error.message.toLowerCase();
3777
+ return (message.includes('unauthorized') ||
3778
+ message.includes('401') ||
3779
+ message.includes('token expired') ||
3780
+ message.includes('-40100'));
3781
+ }
3782
+ // ✅ HELPER: Sleep utility
3783
+ function sleep(ms) {
3784
+ return new Promise(resolve => setTimeout(resolve, ms));
3785
+ }
3786
+ /*
3787
+ //IMPORTANT//
3788
+ //This function is temporary so we install ethers just to make it work, once we delete this function we must uninstall Ethers
3789
+
3790
+ import { ChainData } from "@explorins/web3-ts";
3791
+ import { FetchRequest, JsonRpcProvider } from "ethers";
3792
+
3793
+ export const getWeb3ProviderFromChainData = (
3794
+ chainData: ChainData,
3795
+ timeout = 15000,
3796
+ customUserAgentName = '',
3797
+ tokenRefresher?: () => Promise<string>
3798
+ ) => {
3799
+
3800
+ // Fixed ethers provider setup for authenticated requests
3801
+ let ethersProvider: JsonRpcProvider;
3802
+
3803
+ if (chainData.authHeader) {
3804
+ // For authenticated requests, create a custom FetchRequest
3805
+ const fetchRequest = new FetchRequest(chainData.rpcUrl);
3806
+ fetchRequest.timeout = timeout;
3807
+ fetchRequest.setHeader('Authorization', chainData.authHeader);
3808
+ fetchRequest.setHeader('Content-Type', 'application/json');
3809
+
3810
+ if (customUserAgentName) {
3811
+ fetchRequest.setHeader('User-Agent', customUserAgentName);
3812
+ }
3813
+
3814
+ // Create provider with the configured FetchRequest
3815
+ ethersProvider = new JsonRpcProvider(fetchRequest, undefined, {
3816
+ staticNetwork: false,
3817
+ polling: false, // Disable polling for better Lambda performance
3818
+ });
3819
+ } else {
3820
+ // For public chains, use simple URL-based provider
3821
+ ethersProvider = new JsonRpcProvider(chainData.rpcUrl, undefined, {
3822
+ staticNetwork: false,
3823
+ polling: false,
3824
+ });
3825
+ }
3826
+
3827
+ return {
3828
+ web3Provider: null,
3829
+ ethersProvider: ethersProvider,
3830
+ isAuthenticated: !!chainData.authHeader,
3831
+ };
3832
+ }; */
3711
3833
 
3712
3834
  class Web3ProviderService {
3713
- constructor(publicHttpProviderService) {
3714
- this.publicHttpProviderService = publicHttpProviderService;
3835
+ constructor() {
3715
3836
  this._web3 = null;
3716
3837
  this._currentChainId = null;
3838
+ this._creationPromise = null;
3717
3839
  }
3718
- async getWeb3(chainId, chainType, privateChainData = null) {
3719
- if (!this._web3 || this._currentChainId !== chainId) {
3720
- if (!chainId)
3721
- throw new Error('ChainId not found');
3722
- try {
3723
- this._currentChainId = chainId;
3724
- const provider = await this.getWeb3ByChainId(chainId, chainType, privateChainData);
3725
- this._web3 = this.convertToWeb3(provider);
3726
- }
3727
- catch (error) {
3728
- console.error('Error getting web3 connection from chain id ' + chainId, error);
3729
- throw new Error('Error getting web3 connection from chain id ' + chainId);
3730
- }
3840
+ async getWeb3(chainId, chainType, chainData) {
3841
+ // EARLY RETURN: Reuse existing provider
3842
+ if (this._web3 && this._currentChainId === chainId) {
3843
+ return this._web3;
3731
3844
  }
3732
- return this._web3;
3733
- }
3734
- // Keep return type as 'any' to avoid TypeScript errors while still being adapted later
3735
- getWeb3ByChainId(chainId, chainType, privateChainData = null) {
3736
- // Rest of the method remains the same
3737
- if (chainType === web3Ts.ChainTypes.PRIVATE && privateChainData) {
3738
- //const privateProvider = this.privateChainProviderService.getProviderFromChainData(privateChainData)
3739
- const privateProvider = getWeb3ProviderFromChainData(privateChainData);
3740
- if (!privateProvider || privateProvider instanceof Error)
3741
- throw new Error('Error getting web3 provider');
3742
- return privateProvider;
3845
+ // ✅ PREVENT RACE CONDITION: Wait for ongoing creation
3846
+ if (this._creationPromise) {
3847
+ return await this._creationPromise;
3743
3848
  }
3744
- else {
3745
- const publicProvider = this.publicHttpProviderService.getProvider(chainId);
3746
- if (!publicProvider || publicProvider instanceof Error)
3747
- throw new Error('Error getting web3 provider');
3748
- return publicProvider;
3849
+ if (!chainId)
3850
+ throw new Error('ChainId not found');
3851
+ if (!chainData)
3852
+ throw new Error('ChainData not found');
3853
+ // ✅ CREATE AND CACHE: Single promise for concurrent calls
3854
+ this._creationPromise = this.createProvider(chainId, chainType, chainData);
3855
+ try {
3856
+ const web3Instance = await this._creationPromise;
3857
+ this._web3 = web3Instance;
3858
+ this._currentChainId = chainId;
3859
+ return web3Instance;
3860
+ }
3861
+ finally {
3862
+ // ✅ CLEANUP: Always reset promise after completion
3863
+ this._creationPromise = null;
3749
3864
  }
3750
3865
  }
3866
+ async createProvider(chainId, chainType, chainData) {
3867
+ const provider = await getWeb3ProviderWithRetry(chainData);
3868
+ return this.convertToWeb3(provider);
3869
+ }
3751
3870
  convertToWeb3(provider) {
3752
3871
  if (provider instanceof Web3) {
3753
3872
  return provider;
@@ -3799,6 +3918,128 @@ class Web3ProviderService {
3799
3918
  {};
3800
3919
  }
3801
3920
  }
3921
+ /* import Web3 from "web3";
3922
+ import { ChainData, ChainType, ChainTypes } from "@explorins/web3-ts";
3923
+ import { PublicHttpProviderService } from "./public-http-provider.service";
3924
+ import { getWeb3ProviderFromChainData } from "./getWeb3FCD.service";
3925
+
3926
+
3927
+ export class Web3ProviderService {
3928
+
3929
+ private _web3: Web3 | null = null;
3930
+ private _currentChainId: number | null = null;
3931
+
3932
+ constructor(
3933
+ private readonly publicHttpProviderService: PublicHttpProviderService,
3934
+ ) {
3935
+ }
3936
+
3937
+ public async getWeb3(chainId: number, chainType: ChainType, privateChainData: ChainData | null = null) {
3938
+ if (!this._web3 || this._currentChainId !== chainId) {
3939
+
3940
+ if(!chainId) throw new Error('ChainId not found')
3941
+
3942
+ try {
3943
+ this._currentChainId = chainId;
3944
+ const provider = await this.getWeb3ByChainId(chainId, chainType, privateChainData);
3945
+ this._web3 = this.convertToWeb3(provider);
3946
+ } catch (error) {
3947
+ console.error('Error getting web3 connection from chain id ' + chainId , error)
3948
+ throw new Error('Error getting web3 connection from chain id ' + chainId)
3949
+ }
3950
+ }
3951
+ return this._web3 as Web3;
3952
+ }
3953
+
3954
+ // Keep return type as 'any' to avoid TypeScript errors while still being adapted later
3955
+ private getWeb3ByChainId(chainId: number, chainType: ChainType, privateChainData: ChainData | null = null): any {
3956
+ // Rest of the method remains the same
3957
+ if(chainType === ChainTypes.PRIVATE && privateChainData) {
3958
+ //const privateProvider = this.privateChainProviderService.getProviderFromChainData(privateChainData)
3959
+ const privateProvider = getWeb3ProviderFromChainData(privateChainData);
3960
+
3961
+ if(!privateProvider || privateProvider instanceof Error) throw new Error('Error getting web3 provider');
3962
+
3963
+
3964
+ return privateProvider;
3965
+
3966
+ } else {
3967
+
3968
+ const publicProvider = this.publicHttpProviderService.getProvider(chainId)
3969
+ if(!publicProvider || publicProvider instanceof Error) throw new Error('Error getting web3 provider');
3970
+
3971
+ return publicProvider;
3972
+ }
3973
+ }
3974
+
3975
+ private convertToWeb3(provider: unknown): Web3 {
3976
+ if (provider instanceof Web3) {
3977
+ return provider as Web3;
3978
+ }
3979
+
3980
+ if (provider && typeof provider === 'object' && 'web3Provider' in provider) {
3981
+ const providerObj = provider as {
3982
+ web3Provider?: unknown;
3983
+ ethersProvider?: any;
3984
+ isAuthenticated?: boolean;
3985
+ };
3986
+
3987
+ // If we want to user the web3Provider directly:
3988
+ /*if (providerObj.web3Provider) {
3989
+ return new Web3(providerObj.web3Provider as never);
3990
+ }*/
3991
+ /*if (providerObj.ethersProvider) {
3992
+
3993
+ const url = this.extractUrlFromEthersProvider(providerObj.ethersProvider);
3994
+ const headers = this.extractHeadersFromEthersProvider(providerObj.ethersProvider);
3995
+
3996
+ const web3 = new Web3(url);
3997
+ const currentProvider = web3.currentProvider as unknown as Record<string, unknown>;
3998
+
3999
+ if (currentProvider) {
4000
+ currentProvider['url'] = url;
4001
+
4002
+ if (headers && Object.keys(headers).length > 0) {
4003
+ currentProvider['request'] = async (payload: Record<string, unknown>): Promise<Record<string, unknown>> => {
4004
+ const response = await fetch(url, {
4005
+ method: 'POST',
4006
+ headers: {
4007
+ 'Content-Type': 'application/json',
4008
+ ...headers
4009
+ },
4010
+ body: JSON.stringify(payload)
4011
+ });
4012
+
4013
+ if (!response.ok) {
4014
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
4015
+ }
4016
+
4017
+ return await response.json() as Record<string, unknown>;
4018
+ };
4019
+ }
4020
+ }
4021
+
4022
+ return web3;
4023
+ }
4024
+ }
4025
+
4026
+ return new Web3(provider as never);
4027
+ }
4028
+
4029
+
4030
+ private extractUrlFromEthersProvider(ethersProvider: any): string {
4031
+ return ethersProvider.connection?.url ||
4032
+ ethersProvider._getConnection?.()?.url ||
4033
+ ethersProvider.url ||
4034
+ '';
4035
+ }
4036
+
4037
+ private extractHeadersFromEthersProvider(ethersProvider: any): Record<string, string> {
4038
+ return ethersProvider.connection?.headers ||
4039
+ ethersProvider._getConnection?.()?.headers ||
4040
+ {};
4041
+ }
4042
+ } */
3802
4043
 
3803
4044
  /**
3804
4045
  * Web3 Chain Domain Models
@@ -4149,7 +4390,10 @@ class Web3Service {
4149
4390
  }
4150
4391
  }
4151
4392
 
4152
- function createWeb3SDK(apiClient, web3ProviderService) {
4393
+ //import { PublicHttpProviderService } from '../web3-chain/services/public-http-provider.service';
4394
+ function createWeb3SDK(apiClient) {
4395
+ // TODO: FIX LATER - TEMPORARY CONSTRUCTION
4396
+ const web3ProviderService = new Web3ProviderService();
4153
4397
  const web3ChainSDK = createWeb3ChainSDK(apiClient, web3ProviderService);
4154
4398
  const web3Api = new Web3Api(web3ChainSDK.service);
4155
4399
  const web3Service = new Web3Service(web3Api, web3ChainSDK.service);