@layerswap/wallet-fuel 1.7.0 → 2.0.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/esm/constants.js +1 -1
  2. package/dist/esm/fuelBalanceProvider.js +2 -2
  3. package/dist/esm/fuelGasProvider.js +2 -1
  4. package/dist/esm/index.js +24 -24
  5. package/dist/esm/init.js +38 -0
  6. package/dist/esm/service/FuelConnectionService.js +232 -0
  7. package/dist/esm/service/createFuelConnection.js +45 -0
  8. package/dist/esm/service/fuelStore.js +26 -0
  9. package/dist/esm/service/getFuel.js +13 -0
  10. package/dist/esm/service/syncFuel.js +119 -0
  11. package/dist/esm/transferProvider/{useFuelTransfer.js → createFuelTransfer.js} +6 -6
  12. package/dist/esm/utils/index.js +0 -1
  13. package/dist/esm/utils/resolveIcon.js +3 -8
  14. package/dist/tsconfig.tsbuildinfo +1 -1
  15. package/dist/types/fuelBalanceProvider.d.ts +1 -1
  16. package/dist/types/fuelGasProvider.d.ts +2 -1
  17. package/dist/types/fuelGasProvider.d.ts.map +1 -1
  18. package/dist/types/index.d.ts +10 -7
  19. package/dist/types/index.d.ts.map +1 -1
  20. package/dist/types/init.d.ts +8 -0
  21. package/dist/types/init.d.ts.map +1 -0
  22. package/dist/types/service/FuelConnectionService.d.ts +31 -0
  23. package/dist/types/service/FuelConnectionService.d.ts.map +1 -0
  24. package/dist/types/service/createFuelConnection.d.ts +11 -0
  25. package/dist/types/service/createFuelConnection.d.ts.map +1 -0
  26. package/dist/types/service/fuelStore.d.ts +14 -0
  27. package/dist/types/service/fuelStore.d.ts.map +1 -0
  28. package/dist/types/service/getFuel.d.ts +5 -0
  29. package/dist/types/service/getFuel.d.ts.map +1 -0
  30. package/dist/types/service/syncFuel.d.ts +5 -0
  31. package/dist/types/service/syncFuel.d.ts.map +1 -0
  32. package/dist/types/transferProvider/createFuelTransfer.d.ts +3 -0
  33. package/dist/types/transferProvider/createFuelTransfer.d.ts.map +1 -0
  34. package/dist/types/transferProvider/transactionBuilder.d.ts +1 -1
  35. package/dist/types/transferProvider/transactionBuilder.d.ts.map +1 -1
  36. package/dist/types/utils/index.d.ts +0 -1
  37. package/dist/types/utils/index.d.ts.map +1 -1
  38. package/dist/types/utils/resolveIcon.d.ts +2 -2
  39. package/dist/types/utils/resolveIcon.d.ts.map +1 -1
  40. package/package.json +11 -15
  41. package/dist/esm/FuelProvider.js +0 -36
  42. package/dist/esm/useFuelConnection.js +0 -205
  43. package/dist/esm/utils/KnownFuelConnectors.js +0 -24
  44. package/dist/types/FuelProvider.d.ts +0 -6
  45. package/dist/types/FuelProvider.d.ts.map +0 -1
  46. package/dist/types/transferProvider/useFuelTransfer.d.ts +0 -3
  47. package/dist/types/transferProvider/useFuelTransfer.d.ts.map +0 -1
  48. package/dist/types/useFuelConnection.d.ts +0 -3
  49. package/dist/types/useFuelConnection.d.ts.map +0 -1
  50. package/dist/types/utils/KnownFuelConnectors.d.ts +0 -6
  51. package/dist/types/utils/KnownFuelConnectors.d.ts.map +0 -1
@@ -1,4 +1,4 @@
1
- import { BalanceProvider } from "@layerswap/widget/types";
1
+ import { BalanceProvider } from "@layerswap/widget-types";
2
2
  export declare class FuelBalanceProvider extends BalanceProvider {
3
3
  supportsNetwork: BalanceProvider['supportsNetwork'];
4
4
  fetchBalance: BalanceProvider['fetchBalance'];
@@ -1,4 +1,5 @@
1
- import { GasProvider, GasProps, Network } from "@layerswap/widget/types";
1
+ import { Network } from "@layerswap/widget-types";
2
+ import { GasProvider, GasProps } from "@layerswap/widget-types";
2
3
  export declare class FuelGasProvider implements GasProvider {
3
4
  supportsNetwork(network: Network): boolean;
4
5
  getGas({ address, network, token }: GasProps): Promise<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"fuelGasProvider.d.ts","sourceRoot":"","sources":["../../src/fuelGasProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAGzE,qBAAa,eAAgB,YAAW,WAAW;IAC/C,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAIpC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;CA6CpE"}
1
+ {"version":3,"file":"fuelGasProvider.d.ts","sourceRoot":"","sources":["../../src/fuelGasProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAIhE,qBAAa,eAAgB,YAAW,WAAW;IAC/C,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAIpC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;CA6CpE"}
@@ -1,8 +1,11 @@
1
- import { WalletProvider, BaseWalletProviderConfig } from "@layerswap/widget/types";
2
- export type FuelProviderConfig = BaseWalletProviderConfig;
3
- export declare function createFuelProvider(config?: FuelProviderConfig): WalletProvider;
4
- /**
5
- * @deprecated Use createFuelProvider() instead. This export will be removed in a future version.
6
- */
7
- export declare const FuelProvider: WalletProvider;
1
+ import type { WalletProvider, BaseWalletProviderConfig } from "@layerswap/wallet-core/types";
2
+ import { id } from "./constants";
3
+ import type { NetworkWithTokens } from "@layerswap/widget-types";
4
+ export type FuelProviderConfig<Network = NetworkWithTokens> = BaseWalletProviderConfig<Network>;
5
+ export declare function createFuelProvider<Network = NetworkWithTokens>(config?: FuelProviderConfig<Network>): WalletProvider<Network> & {
6
+ id: typeof id;
7
+ };
8
+ export { createFuelConnection } from "./service/createFuelConnection";
9
+ export { useFuelStore } from "./service/fuelStore";
10
+ export { getFuelInstance, hasFuelInstance } from "./service/getFuel";
8
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAInF,MAAM,MAAM,kBAAkB,GAAG,wBAAwB,CAAA;AAEzD,wBAAgB,kBAAkB,CAAC,MAAM,GAAE,kBAAuB,GAAG,cAAc,CAyClF;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,cAO1B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAqB,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AAM/G,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,MAAM,kBAAkB,CAAC,OAAO,GAAG,iBAAiB,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAA;AAI/F,wBAAgB,kBAAkB,CAAC,OAAO,GAAG,iBAAiB,EAC1D,MAAM,GAAE,kBAAkB,CAAC,OAAO,CAAM,GACzC,cAAc,CAAC,OAAO,CAAC,GAAG;IAAE,EAAE,EAAE,OAAO,EAAE,CAAA;CAAE,CA4C7C;AAED,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * One-shot initialization of the Fuel SDK + store sync.
3
+ * Safe to call multiple times — subsequent calls are no-ops.
4
+ */
5
+ export declare function initFuelProvider(): void;
6
+ /** Visible for tests. Resets the singleton init so a fresh init can run. */
7
+ export declare function _resetFuelInit(): void;
8
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAqBvC;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,IAAI,IAAI,CAGrC"}
@@ -0,0 +1,31 @@
1
+ import { type InternalConnector, type Wallet } from '@layerswap/widget-types';
2
+ import type { WalletConnectionProvider, WalletConnectionService } from "@layerswap/wallet-core/types";
3
+ import type { AppNetworkAdapter } from "@layerswap/wallet-core";
4
+ import type { FuelConnector } from '@fuel-ts/account';
5
+ export declare class FuelConnectionService<Network> implements WalletConnectionService<never, Network> {
6
+ private _networks;
7
+ private _networkAdapter;
8
+ private _networksKey;
9
+ private _connectQueue;
10
+ setNetworks(networks: Network[], networkAdapter: AppNetworkAdapter<Network>): void;
11
+ private addWallet;
12
+ private removeWallet;
13
+ private getConnectedWallets;
14
+ private getSupportedNetworks;
15
+ getNetworkIcon(): string | undefined;
16
+ private resolveConnectorImageIcon;
17
+ getAvailableConnectors(): InternalConnector[];
18
+ resolveFuelWallet(connector: FuelConnector, address: string, addresses: string[]): Promise<Wallet>;
19
+ connectWallet({ connector }: {
20
+ connector: InternalConnector;
21
+ }): Promise<Wallet | undefined>;
22
+ private doConnectWallet;
23
+ disconnectWallet(connectorName: string): Promise<void>;
24
+ disconnectWallets(): Promise<void>;
25
+ switchAccount(wallet: Wallet): Promise<void>;
26
+ switchChain(connector: Wallet, chainId: string | number): Promise<void>;
27
+ resolveConnectedWallets(): Promise<Wallet[]>;
28
+ syncConnectedWallets(): Promise<void>;
29
+ buildProvider(): WalletConnectionProvider;
30
+ }
31
+ //# sourceMappingURL=FuelConnectionService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FuelConnectionService.d.ts","sourceRoot":"","sources":["../../../src/service/FuelConnectionService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,KAAK,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACtG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAOrD,qBAAa,qBAAqB,CAAC,OAAO,CAAE,YAAW,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC;IAC1F,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,eAAe,CAAwC;IAC/D,OAAO,CAAC,YAAY,CAAK;IAKzB,OAAO,CAAC,aAAa,CAAsC;IAE3D,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,IAAI;IAQlF,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,oBAAoB;IAO5B,cAAc,IAAI,MAAM,GAAG,SAAS;IAQpC,OAAO,CAAC,yBAAyB;IAUjC,sBAAsB,IAAI,iBAAiB,EAAE;IAmBvC,iBAAiB,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAsBxG,aAAa,CAAC,EAAE,SAAS,EAAE,EAAE;QAAE,SAAS,EAAE,iBAAiB,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;YAU7E,eAAe;IA2BvB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAetD,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBlC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY5C,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvE,uBAAuB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAkB5C,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3C,aAAa,IAAI,wBAAwB;CAmB5C"}
@@ -0,0 +1,11 @@
1
+ import type { MultiStepHandler, WalletConnectionProviderProps, WalletConnectionStore } from "@layerswap/wallet-core/types";
2
+ type CreateFuelConnectionOptions = {
3
+ extraMultiStepHandlers?: MultiStepHandler[];
4
+ };
5
+ /**
6
+ * Vanilla external-store factory for the Fuel wallet connection. Replaces the
7
+ * old `useFuelConnection` hook.
8
+ */
9
+ export declare function createFuelConnection<Network>(initialProps: WalletConnectionProviderProps<Network>, options?: CreateFuelConnectionOptions): WalletConnectionStore<Network>;
10
+ export {};
11
+ //# sourceMappingURL=createFuelConnection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createFuelConnection.d.ts","sourceRoot":"","sources":["../../../src/service/createFuelConnection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AAO1H,KAAK,2BAA2B,GAAG;IAC/B,sBAAsB,CAAC,EAAE,gBAAgB,EAAE,CAAA;CAC9C,CAAA;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EACxC,YAAY,EAAE,6BAA6B,CAAC,OAAO,CAAC,EACpD,OAAO,GAAE,2BAAgC,GAC1C,qBAAqB,CAAC,OAAO,CAAC,CAwChC"}
@@ -0,0 +1,14 @@
1
+ import { type Wallet } from '@layerswap/widget-types';
2
+ import type { Fuel, FuelConnector } from '@fuel-ts/account';
3
+ export type FuelStoreState = {
4
+ connectors: readonly FuelConnector[];
5
+ fuel: Fuel | undefined;
6
+ ready: boolean;
7
+ connectedWallets: Wallet[];
8
+ _setConnectors: (connectors: readonly FuelConnector[]) => void;
9
+ _setFuel: (fuel: Fuel | undefined) => void;
10
+ connectWallet: (wallet: Wallet) => void;
11
+ disconnectWallet: (connectorName?: string) => void;
12
+ };
13
+ export declare const useFuelStore: import("zustand").UseBoundStore<import("zustand").StoreApi<FuelStoreState>>;
14
+ //# sourceMappingURL=fuelStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fuelStore.d.ts","sourceRoot":"","sources":["../../../src/service/fuelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAE3D,MAAM,MAAM,cAAc,GAAG;IACzB,UAAU,EAAE,SAAS,aAAa,EAAE,CAAA;IACpC,IAAI,EAAE,IAAI,GAAG,SAAS,CAAA;IACtB,KAAK,EAAE,OAAO,CAAA;IACd,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAE1B,cAAc,EAAE,CAAC,UAAU,EAAE,SAAS,aAAa,EAAE,KAAK,IAAI,CAAA;IAC9D,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,KAAK,IAAI,CAAA;IAC1C,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,gBAAgB,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CACrD,CAAA;AAED,eAAO,MAAM,YAAY,6EAyBtB,CAAA"}
@@ -0,0 +1,5 @@
1
+ import type { Fuel } from '@fuel-ts/account';
2
+ export declare function setFuelInstance(instance: Fuel | null): void;
3
+ export declare function getFuelInstance(): Fuel;
4
+ export declare function hasFuelInstance(): boolean;
5
+ //# sourceMappingURL=getFuel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFuel.d.ts","sourceRoot":"","sources":["../../../src/service/getFuel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAI5C,wBAAgB,eAAe,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAE3D;AAED,wBAAgB,eAAe,IAAI,IAAI,CAKtC;AAED,wBAAgB,eAAe,IAAI,OAAO,CAEzC"}
@@ -0,0 +1,5 @@
1
+ import { Fuel } from '@fuel-ts/account';
2
+ export declare function registerFuelWalletSynchronizer(sync: () => Promise<void>): () => void;
3
+ export declare function attachFuelSync(fuel: Fuel): () => void;
4
+ export declare function isFuelSyncAttached(): boolean;
5
+ //# sourceMappingURL=syncFuel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncFuel.d.ts","sourceRoot":"","sources":["../../../src/service/syncFuel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAA2B,MAAM,kBAAkB,CAAA;AAQhE,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAKpF;AAMD,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,IAAI,CAyGrD;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C"}
@@ -0,0 +1,3 @@
1
+ import { TransferProvider } from "@layerswap/widget-types";
2
+ export declare function createFuelTransfer(): TransferProvider;
3
+ //# sourceMappingURL=createFuelTransfer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createFuelTransfer.d.ts","sourceRoot":"","sources":["../../../src/transferProvider/createFuelTransfer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAiB,MAAM,yBAAyB,CAAC;AAY1E,wBAAgB,kBAAkB,IAAI,gBAAgB,CAqDrD"}
@@ -1,4 +1,4 @@
1
- import { TransferProps } from "@layerswap/widget/types";
1
+ import { TransferProps } from "@layerswap/widget-types";
2
2
  import { Account, ScriptTransactionRequest } from 'fuels';
3
3
  export declare const transactionBuilder: (params: {
4
4
  fuelWallet: Account;
@@ -1 +1 @@
1
- {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/transferProvider/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAoC,wBAAwB,EAAE,MAAM,OAAO,CAAC;AAE5F,eAAO,MAAM,kBAAkB,GAAU,QAAQ;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;CAAE,sCAiB5G,CAAA"}
1
+ {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/transferProvider/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAoC,wBAAwB,EAAE,MAAM,OAAO,CAAC;AAE5F,eAAO,MAAM,kBAAkB,GAAU,QAAQ;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;CAAE,sCAiB5G,CAAA"}
@@ -1,3 +1,2 @@
1
- export * from "./KnownFuelConnectors";
2
1
  export * from "./resolveIcon";
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA"}
@@ -1,6 +1,6 @@
1
- export declare const resolveFuelWalletConnectorIcon: ({ connector, address, iconUrl }: {
1
+ export declare const resolveFuelWalletConnectorIcon: ({ connector, iconUrl }: {
2
2
  connector?: string;
3
3
  address?: string;
4
4
  iconUrl?: string;
5
- }) => (props: import("react").SVGProps<SVGSVGElement>) => import("react/jsx-runtime").JSX.Element;
5
+ }) => string | undefined;
6
6
  //# sourceMappingURL=resolveIcon.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveIcon.d.ts","sourceRoot":"","sources":["../../../src/utils/resolveIcon.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,8BAA8B,GAAI,iCAAiC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,gGAOzI,CAAA"}
1
+ {"version":3,"file":"resolveIcon.d.ts","sourceRoot":"","sources":["../../../src/utils/resolveIcon.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,8BAA8B,GAAI,wBAAwB;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,KAAG,MAAM,GAAG,SAE5I,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layerswap/wallet-fuel",
3
- "version": "1.7.0",
3
+ "version": "2.0.0-next.0",
4
4
  "description": "Fuel Wallet Provider for Layerswap Widget",
5
5
  "type": "module",
6
6
  "main": "dist/esm/index.js",
@@ -22,7 +22,7 @@
22
22
  "repository": {
23
23
  "type": "git",
24
24
  "url": "git+https://github.com/layerswap/layerswapapp.git",
25
- "directory": "packages/wallets/fuel"
25
+ "directory": "packages/wallets/adapters/fuel"
26
26
  },
27
27
  "keywords": [
28
28
  "layerswap",
@@ -31,30 +31,26 @@
31
31
  ],
32
32
  "license": "MIT",
33
33
  "peerDependencies": {
34
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc",
35
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc",
36
- "@tanstack/react-query": "5.90.11",
37
34
  "@wagmi/core": "2.16.4",
38
35
  "wagmi": "2.14.11",
39
36
  "viem": "^2.21.16",
40
- "@layerswap/widget": "^1.7.0"
37
+ "zustand": "^4.5.7",
38
+ "@layerswap/wallet-core": "^2.0.0-next.0",
39
+ "@layerswap/utils": "^2.0.0-next.0",
40
+ "@layerswap/widget-types": "^1.0.0-next.0"
41
41
  },
42
42
  "dependencies": {
43
- "@ethersproject/bytes": "^5.8.0",
44
43
  "@fuel-ts/account": "^0.101.3",
45
44
  "@fuel-ts/address": "^0.101.3",
46
- "@fuels/react": "^0.43.2",
47
- "bs58": "^6.0.0",
48
45
  "fuels": "^0.101.3",
49
46
  "json-rpc-2.0": "1.7.0",
50
- "memoizee": "^0.4.17",
51
- "socket.io-client": "^4.8.1",
52
- "tweetnacl": "^1.0.3"
47
+ "socket.io-client": "^4.8.1"
53
48
  },
54
49
  "devDependencies": {
55
- "react": "19.2.3",
56
- "react-dom": "19.2.3",
57
- "@layerswap/widget": "^1.7.0"
50
+ "zustand": "^4.5.7",
51
+ "@layerswap/wallet-core": "^2.0.0-next.0",
52
+ "@layerswap/utils": "^2.0.0-next.0",
53
+ "@layerswap/widget-types": "^1.0.0-next.0"
58
54
  },
59
55
  "engines": {
60
56
  "node": ">=22"
@@ -1,36 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { BakoRequestAPI } from './connectors/bako-safe/Bako';
3
- import { BakoSafeConnector } from './connectors/bako-safe';
4
- import { FuelProvider } from '@fuels/react';
5
- import { FueletWalletConnector } from './connectors/fuelet-wallet';
6
- import { FuelWalletConnector } from './connectors/fuel-wallet';
7
- import { useSettingsState } from '@layerswap/widget/internal';
8
- import { NetworkType } from '@layerswap/widget/types';
9
- import { useMemo, useContext } from 'react';
10
- import { QueryClient, QueryClientContext, QueryClientProvider } from '@tanstack/react-query';
11
- const HOST_URL = 'https://api.bako.global';
12
- const Comp = ({ children }) => {
13
- const { networks } = useSettingsState();
14
- const fuelConfig = {
15
- connectors: [
16
- new FuelWalletConnector(),
17
- new BakoSafeConnector({
18
- api: new BakoRequestAPI(HOST_URL)
19
- }),
20
- new FueletWalletConnector(),
21
- ]
22
- };
23
- const fuelNetworks = useMemo(() => networks.filter(n => n.type == NetworkType.Fuel).map((network) => ({
24
- chainId: Number(network.chain_id)
25
- })), [networks]);
26
- return (_jsx(FuelProvider, { uiConfig: { suggestBridge: false }, theme: 'dark', fuelConfig: fuelConfig, networks: fuelNetworks, children: children }));
27
- };
28
- const queryClient = new QueryClient();
29
- const FuelProviderWrapper = ({ children }) => {
30
- const context = useContext(QueryClientContext);
31
- if (context) {
32
- return _jsx(Comp, { children: children });
33
- }
34
- return (_jsx(QueryClientProvider, { client: queryClient, children: _jsx(Comp, { children: children }) }));
35
- };
36
- export default FuelProviderWrapper;
@@ -1,205 +0,0 @@
1
- import { useConnectors, useFuel as useGlobalFuel } from '@fuels/react';
2
- import { FuelConnectorEventTypes } from '@fuel-ts/account';
3
- import { Address } from '@fuel-ts/address';
4
- import { useWalletStore, sleep } from "@layerswap/widget/internal";
5
- import { useEffect, useMemo } from "react";
6
- import { BAKO_STATE } from "./connectors/bako-safe/Bako";
7
- import { resolveFuelWalletConnectorIcon } from './utils';
8
- import { useFuelTransfer } from './transferProvider/useFuelTransfer';
9
- import { name, id, commonSupportedNetworks } from "./constants";
10
- export default function useFuelConnection({ networks }) {
11
- const { connectors } = useConnectors();
12
- const { fuel } = useGlobalFuel();
13
- const wallets = useWalletStore((state) => state.connectedWallets);
14
- const addWallet = useWalletStore((state) => state.connectWallet);
15
- const removeWallet = useWalletStore((state) => state.disconnectWallet);
16
- const connectedWallets = wallets.filter(wallet => wallet.providerName === name);
17
- const connectWallet = async ({ connector }) => {
18
- const attemptConnection = async (isRetry = false) => {
19
- try {
20
- const fuelConnector = connectors.find(w => w.name === connector.name);
21
- BAKO_STATE.state.last_req = undefined;
22
- BAKO_STATE.period_durtion = 120000;
23
- await fuelConnector?.connect();
24
- const addresses = (await fuelConnector?.accounts())?.map(a => new Address(a).toB256());
25
- if (addresses && fuelConnector) {
26
- const result = await resolveFuelWallet({
27
- address: addresses[0],
28
- addresses: addresses,
29
- connector: fuelConnector,
30
- disconnectWallet,
31
- name,
32
- commonSupportedNetworks,
33
- networkIcon: networks.find(n => commonSupportedNetworks.some(name => name === n.name))?.logo
34
- });
35
- addWallet(result);
36
- await switchAccount(result);
37
- return result;
38
- }
39
- }
40
- catch (e) {
41
- // For Bako Safe, retry once if error is 'false' (connection timeout/user closed popup)
42
- if (connector.name === 'Bako Safe' && e === false && !isRetry) {
43
- console.log('Bako Safe connection failed with false, retrying once...');
44
- await sleep(1000);
45
- return await attemptConnection(true);
46
- }
47
- throw new Error(e);
48
- }
49
- };
50
- return await attemptConnection();
51
- };
52
- const disconnectWallet = async (connectorName) => {
53
- try {
54
- const fuelConnector = connectors.find(c => c.name === connectorName);
55
- if (!fuelConnector)
56
- throw new Error('Connector not found');
57
- await fuelConnector.disconnect();
58
- }
59
- catch (e) {
60
- //TODO: handle error
61
- console.log(e);
62
- }
63
- finally {
64
- removeWallet(name, connectorName);
65
- }
66
- };
67
- const disconnectWallets = async () => {
68
- try {
69
- BAKO_STATE.state.last_req = undefined;
70
- BAKO_STATE.period_durtion = 10000;
71
- for (const connector of connectors.filter(c => c.connected)) {
72
- await connector.disconnect();
73
- removeWallet(name);
74
- }
75
- }
76
- catch (e) {
77
- //TODO: handle error
78
- console.log(e);
79
- }
80
- };
81
- const switchAccount = async (wallet) => {
82
- try {
83
- const res = await fuel.selectConnector(wallet.id);
84
- if (!res)
85
- throw new Error('Could not switch account');
86
- }
87
- catch (e) {
88
- //TODO: handle error
89
- console.log(e);
90
- }
91
- };
92
- const switchChain = async (connector, chainId) => {
93
- try {
94
- const fuelConnector = connectors.find(c => c.name === connector.id);
95
- if (!fuelConnector)
96
- throw new Error('Connector not found');
97
- const res = await fuelConnector.selectNetwork({ chainId: Number(chainId) });
98
- if (!res)
99
- throw new Error('Could not switch chain');
100
- }
101
- catch (e) {
102
- //TODO: handle error
103
- console.log(e);
104
- }
105
- };
106
- const { executeTransfer: transfer } = useFuelTransfer();
107
- const connectedConnectors = useMemo(() => connectors.filter(w => w.connected), [connectors]);
108
- useEffect(() => {
109
- (async () => {
110
- resolveWallet();
111
- })();
112
- }, [connectedConnectors]);
113
- const resolveWallet = async () => {
114
- for (const connector of connectedConnectors) {
115
- try {
116
- const addresses = (await connector.accounts()).map(a => Address.fromAddressOrString(a).toB256());
117
- if (connector.connected && addresses.length > 0) {
118
- const w = await resolveFuelWallet({
119
- address: addresses?.[0],
120
- addresses,
121
- connector,
122
- disconnectWallet,
123
- name,
124
- commonSupportedNetworks: commonSupportedNetworks,
125
- networkIcon: networks.find(n => commonSupportedNetworks.some(name => name === n.name))?.logo
126
- });
127
- addWallet(w);
128
- }
129
- }
130
- catch (e) {
131
- //TODO: handle error
132
- console.log(e);
133
- }
134
- }
135
- };
136
- useEffect(() => {
137
- const disposers = connectors.map((c) => {
138
- const handler = async () => {
139
- await resolveWallet();
140
- };
141
- c.on(FuelConnectorEventTypes.currentNetwork, handler);
142
- return { connector: c, handler };
143
- });
144
- return () => {
145
- disposers.forEach(({ connector, handler }) => {
146
- connector.off(FuelConnectorEventTypes.currentNetwork, handler);
147
- });
148
- };
149
- }, [connectors]);
150
- const availableConnectors = connectors.map(c => {
151
- const isInstalled = c.installed && !c['dAppWindow'];
152
- const isLoadable = c.metadata?.install?.action !== 'Install';
153
- return {
154
- name: c.name,
155
- id: c.name,
156
- icon: typeof c.metadata.image === 'string' ? c.metadata.image : (c.metadata.image?.dark.startsWith('data:') ? c.metadata.image.dark : `data:image/svg+xml;base64,${c.metadata.image && btoa(c.metadata.image.dark)}`),
157
- type: isInstalled ? 'injected' : 'other',
158
- installUrl: c.metadata.install.link,
159
- extensionNotFound: !c.installed,
160
- isLoadable,
161
- providerName: name
162
- };
163
- });
164
- const providerIcon = useMemo(() => networks.find(n => commonSupportedNetworks.some(name => name === n.name))?.logo, [networks]);
165
- const provider = {
166
- connectWallet,
167
- disconnectWallets,
168
- switchAccount,
169
- switchChain,
170
- transfer,
171
- availableConnectors,
172
- autofillSupportedNetworks: commonSupportedNetworks,
173
- withdrawalSupportedNetworks: commonSupportedNetworks,
174
- asSourceSupportedNetworks: commonSupportedNetworks,
175
- activeWallet: connectedWallets?.[0],
176
- connectedWallets,
177
- name,
178
- id,
179
- providerIcon,
180
- ready: connectors.length > 0
181
- };
182
- return provider;
183
- }
184
- const resolveFuelWallet = async ({ address, addresses, commonSupportedNetworks, connector, disconnectWallet, name, networkIcon }) => {
185
- let fuelCurrentConnector = undefined;
186
- let customConnectorname = undefined;
187
- const network = await connector.currentNetwork();
188
- const chainId = network.chainId || network.url.toLowerCase().includes('testnet') ? 0 : 9889;
189
- const w = {
190
- id: connector.name,
191
- address: address,
192
- addresses: addresses,
193
- isActive: true,
194
- chainId: chainId,
195
- disconnect: () => disconnectWallet(connector.name),
196
- displayName: `${fuelCurrentConnector || connector.name} - Fuel`,
197
- providerName: name,
198
- icon: resolveFuelWalletConnectorIcon({ connector: customConnectorname || connector.name, address: address, iconUrl: typeof connector.metadata.image === 'string' ? connector.metadata.image : (connector.metadata.image?.dark.startsWith('data:') ? connector.metadata.image.dark : `data:image/svg+xml;base64,${connector.metadata.image && btoa(connector.metadata.image.dark)}`) }),
199
- autofillSupportedNetworks: commonSupportedNetworks,
200
- withdrawalSupportedNetworks: commonSupportedNetworks,
201
- asSourceSupportedNetworks: commonSupportedNetworks,
202
- networkIcon
203
- };
204
- return w;
205
- };
@@ -1,24 +0,0 @@
1
- import { BakoSafeIcon, FuelIcon, FueletIcon, SolanaIcon, EthereumIcon } from "@layerswap/widget/internal";
2
- const KnownFuelConnectors = [
3
- {
4
- id: 'bako safe',
5
- icon: BakoSafeIcon
6
- },
7
- {
8
- id: 'fuel wallet',
9
- icon: FuelIcon
10
- },
11
- {
12
- id: 'fuelet wallet',
13
- icon: FueletIcon
14
- },
15
- {
16
- id: 'ethereum wallets',
17
- icon: EthereumIcon
18
- },
19
- {
20
- id: 'solana wallets',
21
- icon: SolanaIcon
22
- }
23
- ];
24
- export default KnownFuelConnectors;
@@ -1,6 +0,0 @@
1
- import type { ReactElement } from 'react';
2
- declare const FuelProviderWrapper: ({ children }: {
3
- children: React.ReactNode;
4
- }) => ReactElement;
5
- export default FuelProviderWrapper;
6
- //# sourceMappingURL=FuelProvider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FuelProvider.d.ts","sourceRoot":"","sources":["../../src/FuelProvider.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAkC1C,QAAA,MAAM,mBAAmB,GAAI,cAE1B;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,KAAG,YAiBlC,CAAC;AAGF,eAAe,mBAAmB,CAAC"}
@@ -1,3 +0,0 @@
1
- import { TransferProvider } from "@layerswap/widget/types";
2
- export declare function useFuelTransfer(): TransferProvider;
3
- //# sourceMappingURL=useFuelTransfer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFuelTransfer.d.ts","sourceRoot":"","sources":["../../../src/transferProvider/useFuelTransfer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAA6C,MAAM,yBAAyB,CAAA;AAYrG,wBAAgB,eAAe,IAAI,gBAAgB,CAsDlD"}
@@ -1,3 +0,0 @@
1
- import { WalletConnectionProvider, WalletConnectionProviderProps } from "@layerswap/widget/types";
2
- export default function useFuelConnection({ networks }: WalletConnectionProviderProps): WalletConnectionProvider;
3
- //# sourceMappingURL=useFuelConnection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFuelConnection.d.ts","sourceRoot":"","sources":["../../src/useFuelConnection.ts"],"names":[],"mappings":"AAMA,OAAO,EAA6B,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAK7H,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,6BAA6B,GAAG,wBAAwB,CAwM/G"}
@@ -1,6 +0,0 @@
1
- declare const KnownFuelConnectors: {
2
- id: string;
3
- icon: (props: import("react").SVGProps<SVGSVGElement>) => import("react/jsx-runtime").JSX.Element;
4
- }[];
5
- export default KnownFuelConnectors;
6
- //# sourceMappingURL=KnownFuelConnectors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"KnownFuelConnectors.d.ts","sourceRoot":"","sources":["../../../src/utils/KnownFuelConnectors.tsx"],"names":[],"mappings":"AAEA,QAAA,MAAM,mBAAmB;;;GAqBxB,CAAA;AAED,eAAe,mBAAmB,CAAA"}