@openzeppelin/contracts-ui-builder-adapter-solana
Version:
Solana Adapter for Contracts UI Builder
108 lines (101 loc) • 4.57 kB
TypeScript
import { ContractAdapter, SolanaNetworkConfig, UiKitConfiguration, FormValues, ContractSchema, FieldType, FunctionParameter, FormFieldType, ExecutionConfig, ExecutionMethodDetail, ContractFunction, Connector, AvailableUiKit, RelayerDetails, RelayerDetailsRich, UserRpcProviderConfig } from '@openzeppelin/contracts-ui-builder-types';
/**
* Solana-specific adapter implementation
*/
declare class SolanaAdapter implements ContractAdapter {
readonly networkConfig: SolanaNetworkConfig;
readonly initialAppServiceKitName: UiKitConfiguration['kitName'];
constructor(networkConfig: SolanaNetworkConfig);
loadContract(artifacts: FormValues): Promise<ContractSchema>;
getWritableFunctions(contractSchema: ContractSchema): ContractSchema['functions'];
mapParameterTypeToFieldType(parameterType: string): FieldType;
getCompatibleFieldTypes(parameterType: string): FieldType[];
generateDefaultField<T extends FieldType = FieldType>(parameter: FunctionParameter): FormFieldType<T>;
formatTransactionData(contractSchema: ContractSchema, functionId: string, submittedInputs: Record<string, unknown>, fields: FormFieldType[]): unknown;
signAndBroadcast(transactionData: unknown, executionConfig?: ExecutionConfig): Promise<{
txHash: string;
}>;
isValidAddress(address: string): boolean;
getSupportedExecutionMethods(): Promise<ExecutionMethodDetail[]>;
validateExecutionConfig(config: ExecutionConfig): Promise<true | string>;
isViewFunction(functionDetails: ContractFunction): boolean;
queryViewFunction(contractAddress: string, functionId: string, params?: unknown[], contractSchema?: ContractSchema): Promise<unknown>;
formatFunctionResult(decodedValue: unknown, functionDetails: ContractFunction): string;
supportsWalletConnection(): boolean;
getAvailableConnectors(): Promise<Connector[]>;
connectWallet(connectorId: string): Promise<{
connected: boolean;
address?: string;
error?: string;
}>;
disconnectWallet(): Promise<{
disconnected: boolean;
error?: string;
}>;
getWalletConnectionStatus(): {
isConnected: boolean;
address?: string;
chainId?: string;
};
onWalletConnectionChange?(callback: (status: {
isConnected: boolean;
address?: string;
}) => void): () => void;
getExplorerUrl(address: string): string | null;
getExplorerTxUrl?(txHash: string): string | null;
waitForTransactionConfirmation?(txHash: string): Promise<{
status: 'success' | 'error';
receipt?: unknown;
error?: Error;
}>;
getAvailableUiKits(): Promise<AvailableUiKit[]>;
getContractDefinitionInputs(): FormFieldType[];
getRelayers(_serviceUrl: string, _accessToken: string): Promise<RelayerDetails[]>;
getRelayer(_serviceUrl: string, _accessToken: string, _relayerId: string): Promise<RelayerDetailsRich>;
/**
* @inheritdoc
*/
validateRpcEndpoint(rpcConfig: UserRpcProviderConfig): Promise<boolean>;
/**
* @inheritdoc
*/
testRpcConnection(rpcConfig: UserRpcProviderConfig): Promise<{
success: boolean;
latency?: number;
error?: string;
}>;
}
declare const solanaMainnetBeta: SolanaNetworkConfig;
declare const solanaDevnet: SolanaNetworkConfig;
declare const solanaTestnet: SolanaNetworkConfig;
declare const solanaMainnetNetworks: SolanaNetworkConfig[];
declare const solanaTestnetNetworks: SolanaNetworkConfig[];
declare const solanaNetworks: SolanaNetworkConfig[];
/**
* Configuration for the Solana adapter
*
* This file defines the dependencies required by the Solana adapter
* when generating exported projects. It follows the AdapterConfig
* interface to provide a structured approach to dependency management.
*/
declare const solanaAdapterConfig: {
/**
* Dependencies required by the Solana adapter
* These will be included in exported projects that use this adapter
*/
dependencies: {
runtime: {
'@solana/web3.js': string;
'@solana/spl-token': string;
'@solana/wallet-adapter-react': string;
'@solana/wallet-adapter-base': string;
bs58: string;
'@project-serum/anchor': string;
};
dev: {
'@solana/spl-token-registry': string;
'@solana/cli': string;
};
};
};
export { SolanaAdapter, solanaAdapterConfig, solanaDevnet, solanaMainnetBeta, solanaMainnetNetworks, solanaNetworks, solanaTestnet, solanaTestnetNetworks };