import type { Meta, StoryObj } from '@storybook/react';
import {
Button,
ConnectButton,
ErrorDisplay,
ResultDisplay,
} from '../../stories/components';
import { functionType } from '../../stories/decorators/function-type';
import { useConnect } from '../../stories/hooks/useConnect';
import useQuery from '../../stories/hooks/useQuery';
import { SolanaNetwork } from '../../types';
import { SolanaSdkError } from '../../utils';
import { signLbtcDestinationAddrSolana } from './signLbtcDestinationAddrSolana';
interface SignLbtcDestAddrStoryArgs {
network: SolanaNetwork;
}
export const StoryView = ({ network }: SignLbtcDestAddrStoryArgs) => {
const {
data: connectionData,
error: connectError,
isLoading: isConnecting,
connect,
disconnect,
} = useConnect();
const isConnected = !!connectionData;
const address = connectionData?.address;
const provider = connectionData?.provider;
const request = async () => {
if (!provider || !address) throw new Error('Wallet not connected.');
try {
const result = await signLbtcDestinationAddrSolana({
provider,
network: network,
});
return result.signature;
} catch (err: unknown) {
console.error('Error signing destination address:', err);
throw err instanceof Error ? err : SolanaSdkError.wrap(err);
}
};
const {
data: signature,
error: fetchError,
isLoading,
refetch: signDestinationAddress,
} = useQuery(request, [provider, address, network], false);
const error = fetchError || connectError;
return (
<>
This signature links your connected Solana address ( {address?.substring(0, 6)}...) to your future Bitcoin unstake requests on the chosen network.
Connect wallet to sign address.
)} > ); }; const meta: Meta