update app to use solana kit
This commit is contained in:
@@ -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";
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user