update app to use solana kit

This commit is contained in:
thesn10
2026-05-23 14:45:49 +02:00
parent c92e71fe81
commit 9b7391677c
13 changed files with 320 additions and 256 deletions

View File

@@ -2,4 +2,45 @@ export * from "./types";
export * from "./pda";
export * from "./escrow";
export * from "./registry";
export * from "./listener";
export * from "./listener";
export {
getCreateEscrowInstructionAsync,
getCreateEscrowInstruction,
type CreateEscrowAsyncInput,
type CreateEscrowInput,
} from "./generated/descro/src/generated/instructions/createEscrow";
export {
getDepositInstructionAsync,
getDepositInstruction,
type DepositAsyncInput,
type DepositInput,
} from "./generated/descro/src/generated/instructions/deposit";
export {
getCompleteInstructionAsync,
getCompleteInstruction,
type CompleteAsyncInput,
type CompleteInput,
} from "./generated/descro/src/generated/instructions/complete";
export {
getCancelInstruction,
type CancelInput,
} from "./generated/descro/src/generated/instructions/cancel";
export {
getDisputeInstruction,
type DisputeInput,
} from "./generated/descro/src/generated/instructions/dispute";
export {
getResolveInstructionAsync,
getResolveInstruction,
type ResolveAsyncInput,
type ResolveInput,
} from "./generated/descro/src/generated/instructions/resolve";
export {
getRegisterResolverInstructionAsync,
getRegisterResolverInstruction,
type RegisterResolverAsyncInput,
type RegisterResolverInput,
} from "./generated/descro_ext_resolvers/src/generated/instructions/registerResolver";
export { Winner } from "./generated/descro/src/generated/types/winner";
export { ResolverType } from "./generated/descro_ext_resolvers/src/generated/types/resolverType";

View File

@@ -1 +1,49 @@
export * from "./generated/descro_ext_resolvers/src/generated/accounts";
import type { GetProgramAccountsApi, Lamports, Rpc } from "@solana/kit";
import {
fetchMaybeResolverEntry,
fetchResolverEntry,
decodeResolverEntry,
getResolverEntryDiscriminatorBytes,
} from "./generated/descro_ext_resolvers/src/generated/accounts/resolverEntry";
import { DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS } from "./generated/descro_ext_resolvers/src/generated/programs/descroExtResolvers";
import type { ResolverEntryWithPda } from "./types";
export { fetchResolverEntry, fetchMaybeResolverEntry, decodeResolverEntry };
export async function fetchAllResolvers(
rpc: Rpc<GetProgramAccountsApi>,
): Promise<ResolverEntryWithPda[]> {
const discriminatorBase64 = btoa(
String.fromCharCode(...getResolverEntryDiscriminatorBytes()),
) as never;
const accounts = await rpc
.getProgramAccounts(DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS, {
filters: [
{ memcmp: { offset: 0n, bytes: discriminatorBase64, encoding: "base64" } },
],
encoding: "base64",
})
.send();
const results: ResolverEntryWithPda[] = [];
for (const item of accounts) {
const pda = item.pubkey;
const [base64Data] = item.account.data;
const rawBytes = Uint8Array.from(atob(base64Data), (c) => c.charCodeAt(0));
const decoded = decodeResolverEntry({
address: pda,
data: rawBytes,
executable: item.account.executable,
lamports: item.account.lamports as Lamports,
programAddress: item.account.owner,
space: item.account.space,
exists: true,
});
if (decoded.exists) results.push({ pda, account: decoded.data });
}
return results;
}