@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.
- package/dist/esm/constants.js +1 -1
- package/dist/esm/fuelBalanceProvider.js +2 -2
- package/dist/esm/fuelGasProvider.js +2 -1
- package/dist/esm/index.js +24 -24
- package/dist/esm/init.js +38 -0
- package/dist/esm/service/FuelConnectionService.js +232 -0
- package/dist/esm/service/createFuelConnection.js +45 -0
- package/dist/esm/service/fuelStore.js +26 -0
- package/dist/esm/service/getFuel.js +13 -0
- package/dist/esm/service/syncFuel.js +119 -0
- package/dist/esm/transferProvider/{useFuelTransfer.js → createFuelTransfer.js} +6 -6
- package/dist/esm/utils/index.js +0 -1
- package/dist/esm/utils/resolveIcon.js +3 -8
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/fuelBalanceProvider.d.ts +1 -1
- package/dist/types/fuelGasProvider.d.ts +2 -1
- package/dist/types/fuelGasProvider.d.ts.map +1 -1
- package/dist/types/index.d.ts +10 -7
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/init.d.ts +8 -0
- package/dist/types/init.d.ts.map +1 -0
- package/dist/types/service/FuelConnectionService.d.ts +31 -0
- package/dist/types/service/FuelConnectionService.d.ts.map +1 -0
- package/dist/types/service/createFuelConnection.d.ts +11 -0
- package/dist/types/service/createFuelConnection.d.ts.map +1 -0
- package/dist/types/service/fuelStore.d.ts +14 -0
- package/dist/types/service/fuelStore.d.ts.map +1 -0
- package/dist/types/service/getFuel.d.ts +5 -0
- package/dist/types/service/getFuel.d.ts.map +1 -0
- package/dist/types/service/syncFuel.d.ts +5 -0
- package/dist/types/service/syncFuel.d.ts.map +1 -0
- package/dist/types/transferProvider/createFuelTransfer.d.ts +3 -0
- package/dist/types/transferProvider/createFuelTransfer.d.ts.map +1 -0
- package/dist/types/transferProvider/transactionBuilder.d.ts +1 -1
- package/dist/types/transferProvider/transactionBuilder.d.ts.map +1 -1
- package/dist/types/utils/index.d.ts +0 -1
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/utils/resolveIcon.d.ts +2 -2
- package/dist/types/utils/resolveIcon.d.ts.map +1 -1
- package/package.json +11 -15
- package/dist/esm/FuelProvider.js +0 -36
- package/dist/esm/useFuelConnection.js +0 -205
- package/dist/esm/utils/KnownFuelConnectors.js +0 -24
- package/dist/types/FuelProvider.d.ts +0 -6
- package/dist/types/FuelProvider.d.ts.map +0 -1
- package/dist/types/transferProvider/useFuelTransfer.d.ts +0 -3
- package/dist/types/transferProvider/useFuelTransfer.d.ts.map +0 -1
- package/dist/types/useFuelConnection.d.ts +0 -3
- package/dist/types/useFuelConnection.d.ts.map +0 -1
- package/dist/types/utils/KnownFuelConnectors.d.ts +0 -6
- package/dist/types/utils/KnownFuelConnectors.d.ts.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BalanceProvider } from "@layerswap/widget
|
|
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 {
|
|
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,
|
|
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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import { WalletProvider, BaseWalletProviderConfig } from "@layerswap/
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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.
|
|
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 @@
|
|
|
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 @@
|
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/transferProvider/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
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,
|
|
1
|
+
export declare const resolveFuelWalletConnectorIcon: ({ connector, iconUrl }: {
|
|
2
2
|
connector?: string;
|
|
3
3
|
address?: string;
|
|
4
4
|
iconUrl?: string;
|
|
5
|
-
}) =>
|
|
5
|
+
}) => string | undefined;
|
|
6
6
|
//# sourceMappingURL=resolveIcon.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveIcon.d.ts","sourceRoot":"","sources":["../../../src/utils/resolveIcon.
|
|
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": "
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"@layerswap/
|
|
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"
|
package/dist/esm/FuelProvider.js
DELETED
|
@@ -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 +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 +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 +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 +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"}
|