@safe-global/safe-react-hooks
Version:
A collection of React Hooks that facilitates the interaction of React apps with Safe Smart Accounts
73 lines (72 loc) • 3.13 kB
TypeScript
import { SafeMultisigTransactionResponse, SafeOperationResponse, ListResponse } from '@safe-global/types-kit';
import type { SdkStarterKitConfig } from '@safe-global/sdk-starter-kit';
import type { PaymasterOptions } from '@safe-global/relay-kit';
import type { Address, CustomTransport, HttpTransport } from 'viem';
import type { Chain as ChainType } from 'viem/chains';
import { ConfirmSafeOperationProps, SafeClient as SafeClientType, SafeClientResult, SendSafeOperationProps } from '@safe-global/sdk-starter-kit';
import { ListOptions } from '@safe-global/api-kit';
type BundlerOptions = {
bundlerUrl: string;
};
export * from './guards.js';
export type EIP1193Provider = Exclude<SdkStarterKitConfig['provider'], string>;
type SafeOperationsClient = {
sendSafeOperation?: (props: SendSafeOperationProps) => Promise<SafeClientResult>;
confirmSafeOperation?: (props: ConfirmSafeOperationProps) => Promise<SafeClientResult>;
getPendingSafeOperations?: (options?: ListOptions) => Promise<ListResponse<SafeOperationResponse>>;
};
export type SafeClient = SafeClientType & SafeOperationsClient;
export type SafeOperationOptions = BundlerOptions & PaymasterOptions;
export type CreateConfigParams<Provider extends SdkStarterKitConfig['provider'] = SdkStarterKitConfig['provider'], Signer extends SdkStarterKitConfig['signer'] = SdkStarterKitConfig['signer'], Chain extends ChainType = ChainType> = {
chain: Chain;
provider: Provider;
signer: Signer;
safeOperationOptions?: SafeOperationOptions;
} & SdkStarterKitConfig;
export type SafeConfig<Provider extends SdkStarterKitConfig['provider'] = SdkStarterKitConfig['provider'], Signer extends SdkStarterKitConfig['signer'] = SdkStarterKitConfig['signer'], Chain extends ChainType = ChainType> = SdkStarterKitConfig & {
chain: Chain;
provider: Provider;
signer: Signer;
safeOperationOptions?: SafeOperationOptions;
} & (Provider extends string ? {
transport: HttpTransport;
} : {
transport: CustomTransport;
});
export type SafeConfigWithSigner = SafeConfig & {
signer: string;
};
export type ConfigParam<Config extends SafeConfig = SafeConfig> = {
config?: Config;
};
export type SafeInfo = {
address: Address;
isDeployed: boolean;
nonce: number;
owners: Address[];
threshold: number;
};
export type SafeModuleTransaction = {
readonly created?: string;
readonly executionDate: string;
readonly blockNumber?: number;
readonly isSuccessful?: boolean;
readonly transactionHash?: string;
readonly safe: string;
readonly module: string;
readonly to: string;
readonly value: string;
readonly data: string;
readonly operation: number;
readonly dataDecoded?: string;
};
export type SafeMultisigTransaction = SafeMultisigTransactionResponse;
export type EthereumTransaction = {
readonly executionDate: string;
readonly to: string;
readonly data: string;
readonly txHash: string;
readonly blockNumber?: number;
readonly from: string;
};
export type Transaction = SafeModuleTransaction | SafeMultisigTransaction | EthereumTransaction;