@solana/kit
Version:
Solana Javascript API
39 lines (36 loc) • 1.36 kB
text/typescript
import type { Address } from '@solana/addresses';
import type { Signature } from '@solana/keys';
import type { RequestAirdropApi, Rpc } from '@solana/rpc';
import type { Commitment, Lamports } from '@solana/rpc-types';
import { waitForRecentTransactionConfirmationUntilTimeout } from '@solana/transaction-confirmation';
type RequestAndConfirmAirdropConfig = Readonly<{
abortSignal?: AbortSignal;
commitment: Commitment;
confirmSignatureOnlyTransaction: (
config: Omit<
Parameters<typeof waitForRecentTransactionConfirmationUntilTimeout>[0],
'getRecentSignatureConfirmationPromise' | 'getTimeoutPromise'
>,
) => Promise<void>;
lamports: Lamports;
recipientAddress: Address;
rpc: Rpc<RequestAirdropApi>;
}>;
export async function requestAndConfirmAirdrop_INTERNAL_ONLY_DO_NOT_EXPORT({
abortSignal,
commitment,
confirmSignatureOnlyTransaction,
lamports,
recipientAddress,
rpc,
}: RequestAndConfirmAirdropConfig): Promise<Signature> {
const airdropTransactionSignature = await rpc
.requestAirdrop(recipientAddress, lamports, { commitment })
.send({ abortSignal });
await confirmSignatureOnlyTransaction({
abortSignal,
commitment,
signature: airdropTransactionSignature,
});
return airdropTransactionSignature;
}