import { Keypair, SignatureWithBytes, Signer } from '@mysten/sui/cryptography'; import type { DryRunTransactionBlockResponse, SuiClient, SuiTransactionBlockResponse } from '@firefly-exchange/library-sui'; import type { Transaction as TransactionBlock } from '@mysten/sui/transactions'; import { LoginRequest, AccountPositionLeverageUpdateRequestSignedFields, CreateOrderRequestSignedFields, WithdrawRequestSignedFields, AccountAuthorizationRequestSignedFields, AdjustIsolatedMarginRequestSignedFields } from './api.js'; export interface ISigner { toSuiAddress(): string; isUIWallet(): boolean; } export interface IBluefinSigner extends ISigner { getAddress(): string; signLeverageUpdateRequest: (fields: AccountPositionLeverageUpdateRequestSignedFields) => Promise; signOrderRequest: (fields: CreateOrderRequestSignedFields) => Promise; signWithdrawRequest: (fields: WithdrawRequestSignedFields) => Promise; signAccountAuthorizationRequest: (fields: AccountAuthorizationRequestSignedFields, isAuthorize: boolean) => Promise; signAdjustIsolatedMarginRequest: (fields: AdjustIsolatedMarginRequestSignedFields) => Promise; signLoginRequest: (request: LoginRequest) => Promise; signTx: (txb: TransactionBlock, suiClient: SuiClient) => Promise; executeSponsoredTx: (txBytes: string, userSignature: string, sponsorSignature: string, suiClient: SuiClient) => Promise; executeTx: (txb: TransactionBlock, suiClient: SuiClient) => Promise; } export declare function makeSigner(keyPair: T, isUIWallet: boolean): T & ISigner; export declare class BluefinRequestSigner implements IBluefinSigner { private readonly wallet; constructor(wallet: Pick & ISigner); /** * Sign the login request */ signLoginRequest(loginRequest: LoginRequest): Promise; /** * Sign an order request */ signOrderRequest(signedFields: CreateOrderRequestSignedFields): Promise; /** * Sign a withdraw request */ signWithdrawRequest(withdrawRequestSignedFields: WithdrawRequestSignedFields): Promise; /** * Sign a leverage update request */ signLeverageUpdateRequest(signedFields: AccountPositionLeverageUpdateRequestSignedFields): Promise; /** * Sign an account authorization request */ signAccountAuthorizationRequest(signedFields: AccountAuthorizationRequestSignedFields, is_authorize: boolean): Promise; /** * Sign an isolated margin adjustment request */ signAdjustIsolatedMarginRequest(signedFields: AdjustIsolatedMarginRequestSignedFields): Promise; signTx(txb: TransactionBlock, suiClient: SuiClient): Promise; executeSponsoredTx(txBytes: string, userSignature: string, sponsorSignature: string, suiClient: SuiClient): Promise; executeTx(txb: TransactionBlock, suiClient: SuiClient): Promise; /** * Get the wallet's address */ getAddress(): string; toSuiAddress(): string; /** * Get the wallet type (ui wallet or backend) */ isUIWallet(): boolean; }