use codama and solana kit
This commit is contained in:
11
sdk/codama.descro.json
Normal file
11
sdk/codama.descro.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"idl": "./src/idl/descro.json",
|
||||||
|
"scripts": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"from": "@codama/renderers-js",
|
||||||
|
"args": ["./src/generated/descro"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
11
sdk/codama.registry.json
Normal file
11
sdk/codama.registry.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"idl": "./src/idl/descro_ext_resolvers.json",
|
||||||
|
"scripts": {
|
||||||
|
"js": [
|
||||||
|
{
|
||||||
|
"from": "@codama/renderers-js",
|
||||||
|
"args": ["./src/generated/descro_ext_resolvers"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,13 +4,16 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"main": "./src/index.ts",
|
"main": "./src/index.ts",
|
||||||
"types": "./src/index.ts",
|
"types": "./src/index.ts",
|
||||||
|
"scripts": {
|
||||||
|
"generate": "codama run js --config codama.descro.json && codama run js --config codama.registry.json"
|
||||||
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@coral-xyz/anchor": "^0.32.1",
|
"@solana/kit": "^6.0.0"
|
||||||
"@solana/web3.js": "^1.98.4",
|
|
||||||
"bn.js": "^5.2.3"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/bn.js": "^5.2.0",
|
"@codama/nodes-from-anchor": "^1.4.1",
|
||||||
|
"@codama/renderers-js": "^2.2.0",
|
||||||
|
"codama": "^1.6.0",
|
||||||
"typescript": "^6.0.3"
|
"typescript": "^6.0.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
22
sdk/src/generated/descro/package.json
Normal file
22
sdk/src/generated/descro/package.json
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"name": "js-client",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "src/index.ts",
|
||||||
|
"files": [
|
||||||
|
"./dist/src",
|
||||||
|
"./dist/types",
|
||||||
|
"./src/"
|
||||||
|
],
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"author": "",
|
||||||
|
"peerDependencies": {
|
||||||
|
"@solana/kit": "^6.4.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@solana/program-client-core": "^6.4.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
181
sdk/src/generated/descro/src/generated/accounts/escrowAccount.ts
Normal file
181
sdk/src/generated/descro/src/generated/accounts/escrowAccount.ts
Normal file
@@ -0,0 +1,181 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
assertAccountExists,
|
||||||
|
assertAccountsExist,
|
||||||
|
combineCodec,
|
||||||
|
decodeAccount,
|
||||||
|
fetchEncodedAccount,
|
||||||
|
fetchEncodedAccounts,
|
||||||
|
fixDecoderSize,
|
||||||
|
fixEncoderSize,
|
||||||
|
getAddressDecoder,
|
||||||
|
getAddressEncoder,
|
||||||
|
getBytesDecoder,
|
||||||
|
getBytesEncoder,
|
||||||
|
getOptionDecoder,
|
||||||
|
getOptionEncoder,
|
||||||
|
getStructDecoder,
|
||||||
|
getStructEncoder,
|
||||||
|
getU64Decoder,
|
||||||
|
getU64Encoder,
|
||||||
|
getU8Decoder,
|
||||||
|
getU8Encoder,
|
||||||
|
transformEncoder,
|
||||||
|
type Account,
|
||||||
|
type Address,
|
||||||
|
type Codec,
|
||||||
|
type Decoder,
|
||||||
|
type EncodedAccount,
|
||||||
|
type Encoder,
|
||||||
|
type FetchAccountConfig,
|
||||||
|
type FetchAccountsConfig,
|
||||||
|
type MaybeAccount,
|
||||||
|
type MaybeEncodedAccount,
|
||||||
|
type Option,
|
||||||
|
type OptionOrNullable,
|
||||||
|
type ReadonlyUint8Array,
|
||||||
|
} from "@solana/kit";
|
||||||
|
import {
|
||||||
|
getEscrowStateDecoder,
|
||||||
|
getEscrowStateEncoder,
|
||||||
|
type EscrowState,
|
||||||
|
type EscrowStateArgs,
|
||||||
|
} from "../types";
|
||||||
|
|
||||||
|
export const ESCROW_ACCOUNT_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([
|
||||||
|
36, 69, 48, 18, 128, 225, 125, 135,
|
||||||
|
]);
|
||||||
|
|
||||||
|
export function getEscrowAccountDiscriminatorBytes(): ReadonlyUint8Array {
|
||||||
|
return fixEncoderSize(getBytesEncoder(), 8).encode(
|
||||||
|
ESCROW_ACCOUNT_DISCRIMINATOR,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type EscrowAccount = {
|
||||||
|
discriminator: ReadonlyUint8Array;
|
||||||
|
seller: Address;
|
||||||
|
buyer: Address;
|
||||||
|
amount: bigint;
|
||||||
|
disputeResolver: Option<Address>;
|
||||||
|
state: EscrowState;
|
||||||
|
bump: number;
|
||||||
|
vaultBump: number;
|
||||||
|
escrowId: bigint;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type EscrowAccountArgs = {
|
||||||
|
seller: Address;
|
||||||
|
buyer: Address;
|
||||||
|
amount: number | bigint;
|
||||||
|
disputeResolver: OptionOrNullable<Address>;
|
||||||
|
state: EscrowStateArgs;
|
||||||
|
bump: number;
|
||||||
|
vaultBump: number;
|
||||||
|
escrowId: number | bigint;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Gets the encoder for {@link EscrowAccountArgs} account data. */
|
||||||
|
export function getEscrowAccountEncoder(): Encoder<EscrowAccountArgs> {
|
||||||
|
return transformEncoder(
|
||||||
|
getStructEncoder([
|
||||||
|
["discriminator", fixEncoderSize(getBytesEncoder(), 8)],
|
||||||
|
["seller", getAddressEncoder()],
|
||||||
|
["buyer", getAddressEncoder()],
|
||||||
|
["amount", getU64Encoder()],
|
||||||
|
["disputeResolver", getOptionEncoder(getAddressEncoder())],
|
||||||
|
["state", getEscrowStateEncoder()],
|
||||||
|
["bump", getU8Encoder()],
|
||||||
|
["vaultBump", getU8Encoder()],
|
||||||
|
["escrowId", getU64Encoder()],
|
||||||
|
]),
|
||||||
|
(value) => ({ ...value, discriminator: ESCROW_ACCOUNT_DISCRIMINATOR }),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Gets the decoder for {@link EscrowAccount} account data. */
|
||||||
|
export function getEscrowAccountDecoder(): Decoder<EscrowAccount> {
|
||||||
|
return getStructDecoder([
|
||||||
|
["discriminator", fixDecoderSize(getBytesDecoder(), 8)],
|
||||||
|
["seller", getAddressDecoder()],
|
||||||
|
["buyer", getAddressDecoder()],
|
||||||
|
["amount", getU64Decoder()],
|
||||||
|
["disputeResolver", getOptionDecoder(getAddressDecoder())],
|
||||||
|
["state", getEscrowStateDecoder()],
|
||||||
|
["bump", getU8Decoder()],
|
||||||
|
["vaultBump", getU8Decoder()],
|
||||||
|
["escrowId", getU64Decoder()],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Gets the codec for {@link EscrowAccount} account data. */
|
||||||
|
export function getEscrowAccountCodec(): Codec<
|
||||||
|
EscrowAccountArgs,
|
||||||
|
EscrowAccount
|
||||||
|
> {
|
||||||
|
return combineCodec(getEscrowAccountEncoder(), getEscrowAccountDecoder());
|
||||||
|
}
|
||||||
|
|
||||||
|
export function decodeEscrowAccount<TAddress extends string = string>(
|
||||||
|
encodedAccount: EncodedAccount<TAddress>,
|
||||||
|
): Account<EscrowAccount, TAddress>;
|
||||||
|
export function decodeEscrowAccount<TAddress extends string = string>(
|
||||||
|
encodedAccount: MaybeEncodedAccount<TAddress>,
|
||||||
|
): MaybeAccount<EscrowAccount, TAddress>;
|
||||||
|
export function decodeEscrowAccount<TAddress extends string = string>(
|
||||||
|
encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,
|
||||||
|
): Account<EscrowAccount, TAddress> | MaybeAccount<EscrowAccount, TAddress> {
|
||||||
|
return decodeAccount(
|
||||||
|
encodedAccount as MaybeEncodedAccount<TAddress>,
|
||||||
|
getEscrowAccountDecoder(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function fetchEscrowAccount<TAddress extends string = string>(
|
||||||
|
rpc: Parameters<typeof fetchEncodedAccount>[0],
|
||||||
|
address: Address<TAddress>,
|
||||||
|
config?: FetchAccountConfig,
|
||||||
|
): Promise<Account<EscrowAccount, TAddress>> {
|
||||||
|
const maybeAccount = await fetchMaybeEscrowAccount(rpc, address, config);
|
||||||
|
assertAccountExists(maybeAccount);
|
||||||
|
return maybeAccount;
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function fetchMaybeEscrowAccount<TAddress extends string = string>(
|
||||||
|
rpc: Parameters<typeof fetchEncodedAccount>[0],
|
||||||
|
address: Address<TAddress>,
|
||||||
|
config?: FetchAccountConfig,
|
||||||
|
): Promise<MaybeAccount<EscrowAccount, TAddress>> {
|
||||||
|
const maybeAccount = await fetchEncodedAccount(rpc, address, config);
|
||||||
|
return decodeEscrowAccount(maybeAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function fetchAllEscrowAccount(
|
||||||
|
rpc: Parameters<typeof fetchEncodedAccounts>[0],
|
||||||
|
addresses: Array<Address>,
|
||||||
|
config?: FetchAccountsConfig,
|
||||||
|
): Promise<Account<EscrowAccount>[]> {
|
||||||
|
const maybeAccounts = await fetchAllMaybeEscrowAccount(
|
||||||
|
rpc,
|
||||||
|
addresses,
|
||||||
|
config,
|
||||||
|
);
|
||||||
|
assertAccountsExist(maybeAccounts);
|
||||||
|
return maybeAccounts;
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function fetchAllMaybeEscrowAccount(
|
||||||
|
rpc: Parameters<typeof fetchEncodedAccounts>[0],
|
||||||
|
addresses: Array<Address>,
|
||||||
|
config?: FetchAccountsConfig,
|
||||||
|
): Promise<MaybeAccount<EscrowAccount>[]> {
|
||||||
|
const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);
|
||||||
|
return maybeAccounts.map((maybeAccount) => decodeEscrowAccount(maybeAccount));
|
||||||
|
}
|
||||||
9
sdk/src/generated/descro/src/generated/accounts/index.ts
Normal file
9
sdk/src/generated/descro/src/generated/accounts/index.ts
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
export * from "./escrowAccount";
|
||||||
68
sdk/src/generated/descro/src/generated/errors/descro.ts
Normal file
68
sdk/src/generated/descro/src/generated/errors/descro.ts
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
isProgramError,
|
||||||
|
type Address,
|
||||||
|
type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,
|
||||||
|
type SolanaError,
|
||||||
|
} from "@solana/kit";
|
||||||
|
import { DESCRO_PROGRAM_ADDRESS } from "../programs";
|
||||||
|
|
||||||
|
/** InvalidState: Invalid state for this instruction */
|
||||||
|
export const DESCRO_ERROR__INVALID_STATE = 0x1770; // 6000
|
||||||
|
/** Unauthorized: Signer is not authorized */
|
||||||
|
export const DESCRO_ERROR__UNAUTHORIZED = 0x1771; // 6001
|
||||||
|
/** NoResolverConfigured: No resolver configured for this escrow */
|
||||||
|
export const DESCRO_ERROR__NO_RESOLVER_CONFIGURED = 0x1772; // 6002
|
||||||
|
/** UnauthorizedResolver: Signer is not the configured resolver */
|
||||||
|
export const DESCRO_ERROR__UNAUTHORIZED_RESOLVER = 0x1773; // 6003
|
||||||
|
/** Expired: Escrow has expired */
|
||||||
|
export const DESCRO_ERROR__EXPIRED = 0x1774; // 6004
|
||||||
|
|
||||||
|
export type DescroError =
|
||||||
|
| typeof DESCRO_ERROR__EXPIRED
|
||||||
|
| typeof DESCRO_ERROR__INVALID_STATE
|
||||||
|
| typeof DESCRO_ERROR__NO_RESOLVER_CONFIGURED
|
||||||
|
| typeof DESCRO_ERROR__UNAUTHORIZED
|
||||||
|
| typeof DESCRO_ERROR__UNAUTHORIZED_RESOLVER;
|
||||||
|
|
||||||
|
let descroErrorMessages: Record<DescroError, string> | undefined;
|
||||||
|
if (process.env["NODE_ENV"] !== "production") {
|
||||||
|
descroErrorMessages = {
|
||||||
|
[DESCRO_ERROR__EXPIRED]: `Escrow has expired`,
|
||||||
|
[DESCRO_ERROR__INVALID_STATE]: `Invalid state for this instruction`,
|
||||||
|
[DESCRO_ERROR__NO_RESOLVER_CONFIGURED]: `No resolver configured for this escrow`,
|
||||||
|
[DESCRO_ERROR__UNAUTHORIZED]: `Signer is not authorized`,
|
||||||
|
[DESCRO_ERROR__UNAUTHORIZED_RESOLVER]: `Signer is not the configured resolver`,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getDescroErrorMessage(code: DescroError): string {
|
||||||
|
if (process.env["NODE_ENV"] !== "production") {
|
||||||
|
return (descroErrorMessages as Record<DescroError, string>)[code];
|
||||||
|
}
|
||||||
|
|
||||||
|
return "Error message not available in production bundles.";
|
||||||
|
}
|
||||||
|
|
||||||
|
export function isDescroError<TProgramErrorCode extends DescroError>(
|
||||||
|
error: unknown,
|
||||||
|
transactionMessage: {
|
||||||
|
instructions: Record<number, { programAddress: Address }>;
|
||||||
|
},
|
||||||
|
code?: TProgramErrorCode,
|
||||||
|
): error is SolanaError<typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM> &
|
||||||
|
Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {
|
||||||
|
return isProgramError<TProgramErrorCode>(
|
||||||
|
error,
|
||||||
|
transactionMessage,
|
||||||
|
DESCRO_PROGRAM_ADDRESS,
|
||||||
|
code,
|
||||||
|
);
|
||||||
|
}
|
||||||
9
sdk/src/generated/descro/src/generated/errors/index.ts
Normal file
9
sdk/src/generated/descro/src/generated/errors/index.ts
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
export * from "./descro";
|
||||||
14
sdk/src/generated/descro/src/generated/index.ts
Normal file
14
sdk/src/generated/descro/src/generated/index.ts
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
export * from "./accounts";
|
||||||
|
export * from "./errors";
|
||||||
|
export * from "./instructions";
|
||||||
|
export * from "./pdas";
|
||||||
|
export * from "./programs";
|
||||||
|
export * from "./types";
|
||||||
211
sdk/src/generated/descro/src/generated/instructions/cancel.ts
Normal file
211
sdk/src/generated/descro/src/generated/instructions/cancel.ts
Normal file
@@ -0,0 +1,211 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
combineCodec,
|
||||||
|
fixDecoderSize,
|
||||||
|
fixEncoderSize,
|
||||||
|
getBytesDecoder,
|
||||||
|
getBytesEncoder,
|
||||||
|
getStructDecoder,
|
||||||
|
getStructEncoder,
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,
|
||||||
|
SolanaError,
|
||||||
|
transformEncoder,
|
||||||
|
type AccountMeta,
|
||||||
|
type AccountSignerMeta,
|
||||||
|
type Address,
|
||||||
|
type FixedSizeCodec,
|
||||||
|
type FixedSizeDecoder,
|
||||||
|
type FixedSizeEncoder,
|
||||||
|
type Instruction,
|
||||||
|
type InstructionWithAccounts,
|
||||||
|
type InstructionWithData,
|
||||||
|
type ReadonlyAccount,
|
||||||
|
type ReadonlyUint8Array,
|
||||||
|
type TransactionSigner,
|
||||||
|
type WritableAccount,
|
||||||
|
type WritableSignerAccount,
|
||||||
|
} from "@solana/kit";
|
||||||
|
import {
|
||||||
|
getAccountMetaFactory,
|
||||||
|
type ResolvedInstructionAccount,
|
||||||
|
} from "@solana/program-client-core";
|
||||||
|
import { DESCRO_PROGRAM_ADDRESS } from "../programs";
|
||||||
|
|
||||||
|
export const CANCEL_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([
|
||||||
|
232, 219, 223, 41, 219, 236, 220, 190,
|
||||||
|
]);
|
||||||
|
|
||||||
|
export function getCancelDiscriminatorBytes(): ReadonlyUint8Array {
|
||||||
|
return fixEncoderSize(getBytesEncoder(), 8).encode(CANCEL_DISCRIMINATOR);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type CancelInstruction<
|
||||||
|
TProgram extends string = typeof DESCRO_PROGRAM_ADDRESS,
|
||||||
|
TAccountSeller extends string | AccountMeta<string> = string,
|
||||||
|
TAccountEscrowAccount extends string | AccountMeta<string> = string,
|
||||||
|
TAccountSystemProgram extends string | AccountMeta<string> =
|
||||||
|
"11111111111111111111111111111111",
|
||||||
|
TRemainingAccounts extends readonly AccountMeta<string>[] = [],
|
||||||
|
> = Instruction<TProgram> &
|
||||||
|
InstructionWithData<ReadonlyUint8Array> &
|
||||||
|
InstructionWithAccounts<
|
||||||
|
[
|
||||||
|
TAccountSeller extends string
|
||||||
|
? WritableSignerAccount<TAccountSeller> &
|
||||||
|
AccountSignerMeta<TAccountSeller>
|
||||||
|
: TAccountSeller,
|
||||||
|
TAccountEscrowAccount extends string
|
||||||
|
? WritableAccount<TAccountEscrowAccount>
|
||||||
|
: TAccountEscrowAccount,
|
||||||
|
TAccountSystemProgram extends string
|
||||||
|
? ReadonlyAccount<TAccountSystemProgram>
|
||||||
|
: TAccountSystemProgram,
|
||||||
|
...TRemainingAccounts,
|
||||||
|
]
|
||||||
|
>;
|
||||||
|
|
||||||
|
export type CancelInstructionData = { discriminator: ReadonlyUint8Array };
|
||||||
|
|
||||||
|
export type CancelInstructionDataArgs = {};
|
||||||
|
|
||||||
|
export function getCancelInstructionDataEncoder(): FixedSizeEncoder<CancelInstructionDataArgs> {
|
||||||
|
return transformEncoder(
|
||||||
|
getStructEncoder([["discriminator", fixEncoderSize(getBytesEncoder(), 8)]]),
|
||||||
|
(value) => ({ ...value, discriminator: CANCEL_DISCRIMINATOR }),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getCancelInstructionDataDecoder(): FixedSizeDecoder<CancelInstructionData> {
|
||||||
|
return getStructDecoder([
|
||||||
|
["discriminator", fixDecoderSize(getBytesDecoder(), 8)],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getCancelInstructionDataCodec(): FixedSizeCodec<
|
||||||
|
CancelInstructionDataArgs,
|
||||||
|
CancelInstructionData
|
||||||
|
> {
|
||||||
|
return combineCodec(
|
||||||
|
getCancelInstructionDataEncoder(),
|
||||||
|
getCancelInstructionDataDecoder(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type CancelInput<
|
||||||
|
TAccountSeller extends string = string,
|
||||||
|
TAccountEscrowAccount extends string = string,
|
||||||
|
TAccountSystemProgram extends string = string,
|
||||||
|
> = {
|
||||||
|
seller: TransactionSigner<TAccountSeller>;
|
||||||
|
escrowAccount: Address<TAccountEscrowAccount>;
|
||||||
|
systemProgram?: Address<TAccountSystemProgram>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function getCancelInstruction<
|
||||||
|
TAccountSeller extends string,
|
||||||
|
TAccountEscrowAccount extends string,
|
||||||
|
TAccountSystemProgram extends string,
|
||||||
|
TProgramAddress extends Address = typeof DESCRO_PROGRAM_ADDRESS,
|
||||||
|
>(
|
||||||
|
input: CancelInput<
|
||||||
|
TAccountSeller,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>,
|
||||||
|
config?: { programAddress?: TProgramAddress },
|
||||||
|
): CancelInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountSeller,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountSystemProgram
|
||||||
|
> {
|
||||||
|
// Program address.
|
||||||
|
const programAddress = config?.programAddress ?? DESCRO_PROGRAM_ADDRESS;
|
||||||
|
|
||||||
|
// Original accounts.
|
||||||
|
const originalAccounts = {
|
||||||
|
seller: { value: input.seller ?? null, isWritable: true },
|
||||||
|
escrowAccount: { value: input.escrowAccount ?? null, isWritable: true },
|
||||||
|
systemProgram: { value: input.systemProgram ?? null, isWritable: false },
|
||||||
|
};
|
||||||
|
const accounts = originalAccounts as Record<
|
||||||
|
keyof typeof originalAccounts,
|
||||||
|
ResolvedInstructionAccount
|
||||||
|
>;
|
||||||
|
|
||||||
|
// Resolve default values.
|
||||||
|
if (!accounts.systemProgram.value) {
|
||||||
|
accounts.systemProgram.value =
|
||||||
|
"11111111111111111111111111111111" as Address<"11111111111111111111111111111111">;
|
||||||
|
}
|
||||||
|
|
||||||
|
const getAccountMeta = getAccountMetaFactory(programAddress, "programId");
|
||||||
|
return Object.freeze({
|
||||||
|
accounts: [
|
||||||
|
getAccountMeta("seller", accounts.seller),
|
||||||
|
getAccountMeta("escrowAccount", accounts.escrowAccount),
|
||||||
|
getAccountMeta("systemProgram", accounts.systemProgram),
|
||||||
|
],
|
||||||
|
data: getCancelInstructionDataEncoder().encode({}),
|
||||||
|
programAddress,
|
||||||
|
} as CancelInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountSeller,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ParsedCancelInstruction<
|
||||||
|
TProgram extends string = typeof DESCRO_PROGRAM_ADDRESS,
|
||||||
|
TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],
|
||||||
|
> = {
|
||||||
|
programAddress: Address<TProgram>;
|
||||||
|
accounts: {
|
||||||
|
seller: TAccountMetas[0];
|
||||||
|
escrowAccount: TAccountMetas[1];
|
||||||
|
systemProgram: TAccountMetas[2];
|
||||||
|
};
|
||||||
|
data: CancelInstructionData;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function parseCancelInstruction<
|
||||||
|
TProgram extends string,
|
||||||
|
TAccountMetas extends readonly AccountMeta[],
|
||||||
|
>(
|
||||||
|
instruction: Instruction<TProgram> &
|
||||||
|
InstructionWithAccounts<TAccountMetas> &
|
||||||
|
InstructionWithData<ReadonlyUint8Array>,
|
||||||
|
): ParsedCancelInstruction<TProgram, TAccountMetas> {
|
||||||
|
if (instruction.accounts.length < 3) {
|
||||||
|
throw new SolanaError(
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,
|
||||||
|
{
|
||||||
|
actualAccountMetas: instruction.accounts.length,
|
||||||
|
expectedAccountMetas: 3,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
let accountIndex = 0;
|
||||||
|
const getNextAccount = () => {
|
||||||
|
const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;
|
||||||
|
accountIndex += 1;
|
||||||
|
return accountMeta;
|
||||||
|
};
|
||||||
|
return {
|
||||||
|
programAddress: instruction.programAddress,
|
||||||
|
accounts: {
|
||||||
|
seller: getNextAccount(),
|
||||||
|
escrowAccount: getNextAccount(),
|
||||||
|
systemProgram: getNextAccount(),
|
||||||
|
},
|
||||||
|
data: getCancelInstructionDataDecoder().decode(instruction.data),
|
||||||
|
};
|
||||||
|
}
|
||||||
332
sdk/src/generated/descro/src/generated/instructions/complete.ts
Normal file
332
sdk/src/generated/descro/src/generated/instructions/complete.ts
Normal file
@@ -0,0 +1,332 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
combineCodec,
|
||||||
|
fixDecoderSize,
|
||||||
|
fixEncoderSize,
|
||||||
|
getBytesDecoder,
|
||||||
|
getBytesEncoder,
|
||||||
|
getStructDecoder,
|
||||||
|
getStructEncoder,
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,
|
||||||
|
SolanaError,
|
||||||
|
transformEncoder,
|
||||||
|
type AccountMeta,
|
||||||
|
type AccountSignerMeta,
|
||||||
|
type Address,
|
||||||
|
type FixedSizeCodec,
|
||||||
|
type FixedSizeDecoder,
|
||||||
|
type FixedSizeEncoder,
|
||||||
|
type Instruction,
|
||||||
|
type InstructionWithAccounts,
|
||||||
|
type InstructionWithData,
|
||||||
|
type ReadonlyAccount,
|
||||||
|
type ReadonlySignerAccount,
|
||||||
|
type ReadonlyUint8Array,
|
||||||
|
type TransactionSigner,
|
||||||
|
type WritableAccount,
|
||||||
|
} from "@solana/kit";
|
||||||
|
import {
|
||||||
|
getAccountMetaFactory,
|
||||||
|
getAddressFromResolvedInstructionAccount,
|
||||||
|
type ResolvedInstructionAccount,
|
||||||
|
} from "@solana/program-client-core";
|
||||||
|
import { findVaultPda } from "../pdas";
|
||||||
|
import { DESCRO_PROGRAM_ADDRESS } from "../programs";
|
||||||
|
|
||||||
|
export const COMPLETE_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([
|
||||||
|
0, 77, 224, 147, 136, 25, 88, 76,
|
||||||
|
]);
|
||||||
|
|
||||||
|
export function getCompleteDiscriminatorBytes(): ReadonlyUint8Array {
|
||||||
|
return fixEncoderSize(getBytesEncoder(), 8).encode(COMPLETE_DISCRIMINATOR);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type CompleteInstruction<
|
||||||
|
TProgram extends string = typeof DESCRO_PROGRAM_ADDRESS,
|
||||||
|
TAccountBuyer extends string | AccountMeta<string> = string,
|
||||||
|
TAccountSeller extends string | AccountMeta<string> = string,
|
||||||
|
TAccountEscrowAccount extends string | AccountMeta<string> = string,
|
||||||
|
TAccountVault extends string | AccountMeta<string> = string,
|
||||||
|
TAccountSystemProgram extends string | AccountMeta<string> =
|
||||||
|
"11111111111111111111111111111111",
|
||||||
|
TRemainingAccounts extends readonly AccountMeta<string>[] = [],
|
||||||
|
> = Instruction<TProgram> &
|
||||||
|
InstructionWithData<ReadonlyUint8Array> &
|
||||||
|
InstructionWithAccounts<
|
||||||
|
[
|
||||||
|
TAccountBuyer extends string
|
||||||
|
? ReadonlySignerAccount<TAccountBuyer> &
|
||||||
|
AccountSignerMeta<TAccountBuyer>
|
||||||
|
: TAccountBuyer,
|
||||||
|
TAccountSeller extends string
|
||||||
|
? WritableAccount<TAccountSeller>
|
||||||
|
: TAccountSeller,
|
||||||
|
TAccountEscrowAccount extends string
|
||||||
|
? WritableAccount<TAccountEscrowAccount>
|
||||||
|
: TAccountEscrowAccount,
|
||||||
|
TAccountVault extends string
|
||||||
|
? WritableAccount<TAccountVault>
|
||||||
|
: TAccountVault,
|
||||||
|
TAccountSystemProgram extends string
|
||||||
|
? ReadonlyAccount<TAccountSystemProgram>
|
||||||
|
: TAccountSystemProgram,
|
||||||
|
...TRemainingAccounts,
|
||||||
|
]
|
||||||
|
>;
|
||||||
|
|
||||||
|
export type CompleteInstructionData = { discriminator: ReadonlyUint8Array };
|
||||||
|
|
||||||
|
export type CompleteInstructionDataArgs = {};
|
||||||
|
|
||||||
|
export function getCompleteInstructionDataEncoder(): FixedSizeEncoder<CompleteInstructionDataArgs> {
|
||||||
|
return transformEncoder(
|
||||||
|
getStructEncoder([["discriminator", fixEncoderSize(getBytesEncoder(), 8)]]),
|
||||||
|
(value) => ({ ...value, discriminator: COMPLETE_DISCRIMINATOR }),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getCompleteInstructionDataDecoder(): FixedSizeDecoder<CompleteInstructionData> {
|
||||||
|
return getStructDecoder([
|
||||||
|
["discriminator", fixDecoderSize(getBytesDecoder(), 8)],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getCompleteInstructionDataCodec(): FixedSizeCodec<
|
||||||
|
CompleteInstructionDataArgs,
|
||||||
|
CompleteInstructionData
|
||||||
|
> {
|
||||||
|
return combineCodec(
|
||||||
|
getCompleteInstructionDataEncoder(),
|
||||||
|
getCompleteInstructionDataDecoder(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type CompleteAsyncInput<
|
||||||
|
TAccountBuyer extends string = string,
|
||||||
|
TAccountSeller extends string = string,
|
||||||
|
TAccountEscrowAccount extends string = string,
|
||||||
|
TAccountVault extends string = string,
|
||||||
|
TAccountSystemProgram extends string = string,
|
||||||
|
> = {
|
||||||
|
buyer: TransactionSigner<TAccountBuyer>;
|
||||||
|
seller: Address<TAccountSeller>;
|
||||||
|
escrowAccount: Address<TAccountEscrowAccount>;
|
||||||
|
vault?: Address<TAccountVault>;
|
||||||
|
systemProgram?: Address<TAccountSystemProgram>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export async function getCompleteInstructionAsync<
|
||||||
|
TAccountBuyer extends string,
|
||||||
|
TAccountSeller extends string,
|
||||||
|
TAccountEscrowAccount extends string,
|
||||||
|
TAccountVault extends string,
|
||||||
|
TAccountSystemProgram extends string,
|
||||||
|
TProgramAddress extends Address = typeof DESCRO_PROGRAM_ADDRESS,
|
||||||
|
>(
|
||||||
|
input: CompleteAsyncInput<
|
||||||
|
TAccountBuyer,
|
||||||
|
TAccountSeller,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>,
|
||||||
|
config?: { programAddress?: TProgramAddress },
|
||||||
|
): Promise<
|
||||||
|
CompleteInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountBuyer,
|
||||||
|
TAccountSeller,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>
|
||||||
|
> {
|
||||||
|
// Program address.
|
||||||
|
const programAddress = config?.programAddress ?? DESCRO_PROGRAM_ADDRESS;
|
||||||
|
|
||||||
|
// Original accounts.
|
||||||
|
const originalAccounts = {
|
||||||
|
buyer: { value: input.buyer ?? null, isWritable: false },
|
||||||
|
seller: { value: input.seller ?? null, isWritable: true },
|
||||||
|
escrowAccount: { value: input.escrowAccount ?? null, isWritable: true },
|
||||||
|
vault: { value: input.vault ?? null, isWritable: true },
|
||||||
|
systemProgram: { value: input.systemProgram ?? null, isWritable: false },
|
||||||
|
};
|
||||||
|
const accounts = originalAccounts as Record<
|
||||||
|
keyof typeof originalAccounts,
|
||||||
|
ResolvedInstructionAccount
|
||||||
|
>;
|
||||||
|
|
||||||
|
// Resolve default values.
|
||||||
|
if (!accounts.vault.value) {
|
||||||
|
accounts.vault.value = await findVaultPda({
|
||||||
|
escrowAccount: getAddressFromResolvedInstructionAccount(
|
||||||
|
"escrowAccount",
|
||||||
|
accounts.escrowAccount.value,
|
||||||
|
),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (!accounts.systemProgram.value) {
|
||||||
|
accounts.systemProgram.value =
|
||||||
|
"11111111111111111111111111111111" as Address<"11111111111111111111111111111111">;
|
||||||
|
}
|
||||||
|
|
||||||
|
const getAccountMeta = getAccountMetaFactory(programAddress, "programId");
|
||||||
|
return Object.freeze({
|
||||||
|
accounts: [
|
||||||
|
getAccountMeta("buyer", accounts.buyer),
|
||||||
|
getAccountMeta("seller", accounts.seller),
|
||||||
|
getAccountMeta("escrowAccount", accounts.escrowAccount),
|
||||||
|
getAccountMeta("vault", accounts.vault),
|
||||||
|
getAccountMeta("systemProgram", accounts.systemProgram),
|
||||||
|
],
|
||||||
|
data: getCompleteInstructionDataEncoder().encode({}),
|
||||||
|
programAddress,
|
||||||
|
} as CompleteInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountBuyer,
|
||||||
|
TAccountSeller,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type CompleteInput<
|
||||||
|
TAccountBuyer extends string = string,
|
||||||
|
TAccountSeller extends string = string,
|
||||||
|
TAccountEscrowAccount extends string = string,
|
||||||
|
TAccountVault extends string = string,
|
||||||
|
TAccountSystemProgram extends string = string,
|
||||||
|
> = {
|
||||||
|
buyer: TransactionSigner<TAccountBuyer>;
|
||||||
|
seller: Address<TAccountSeller>;
|
||||||
|
escrowAccount: Address<TAccountEscrowAccount>;
|
||||||
|
vault: Address<TAccountVault>;
|
||||||
|
systemProgram?: Address<TAccountSystemProgram>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function getCompleteInstruction<
|
||||||
|
TAccountBuyer extends string,
|
||||||
|
TAccountSeller extends string,
|
||||||
|
TAccountEscrowAccount extends string,
|
||||||
|
TAccountVault extends string,
|
||||||
|
TAccountSystemProgram extends string,
|
||||||
|
TProgramAddress extends Address = typeof DESCRO_PROGRAM_ADDRESS,
|
||||||
|
>(
|
||||||
|
input: CompleteInput<
|
||||||
|
TAccountBuyer,
|
||||||
|
TAccountSeller,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>,
|
||||||
|
config?: { programAddress?: TProgramAddress },
|
||||||
|
): CompleteInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountBuyer,
|
||||||
|
TAccountSeller,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountSystemProgram
|
||||||
|
> {
|
||||||
|
// Program address.
|
||||||
|
const programAddress = config?.programAddress ?? DESCRO_PROGRAM_ADDRESS;
|
||||||
|
|
||||||
|
// Original accounts.
|
||||||
|
const originalAccounts = {
|
||||||
|
buyer: { value: input.buyer ?? null, isWritable: false },
|
||||||
|
seller: { value: input.seller ?? null, isWritable: true },
|
||||||
|
escrowAccount: { value: input.escrowAccount ?? null, isWritable: true },
|
||||||
|
vault: { value: input.vault ?? null, isWritable: true },
|
||||||
|
systemProgram: { value: input.systemProgram ?? null, isWritable: false },
|
||||||
|
};
|
||||||
|
const accounts = originalAccounts as Record<
|
||||||
|
keyof typeof originalAccounts,
|
||||||
|
ResolvedInstructionAccount
|
||||||
|
>;
|
||||||
|
|
||||||
|
// Resolve default values.
|
||||||
|
if (!accounts.systemProgram.value) {
|
||||||
|
accounts.systemProgram.value =
|
||||||
|
"11111111111111111111111111111111" as Address<"11111111111111111111111111111111">;
|
||||||
|
}
|
||||||
|
|
||||||
|
const getAccountMeta = getAccountMetaFactory(programAddress, "programId");
|
||||||
|
return Object.freeze({
|
||||||
|
accounts: [
|
||||||
|
getAccountMeta("buyer", accounts.buyer),
|
||||||
|
getAccountMeta("seller", accounts.seller),
|
||||||
|
getAccountMeta("escrowAccount", accounts.escrowAccount),
|
||||||
|
getAccountMeta("vault", accounts.vault),
|
||||||
|
getAccountMeta("systemProgram", accounts.systemProgram),
|
||||||
|
],
|
||||||
|
data: getCompleteInstructionDataEncoder().encode({}),
|
||||||
|
programAddress,
|
||||||
|
} as CompleteInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountBuyer,
|
||||||
|
TAccountSeller,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ParsedCompleteInstruction<
|
||||||
|
TProgram extends string = typeof DESCRO_PROGRAM_ADDRESS,
|
||||||
|
TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],
|
||||||
|
> = {
|
||||||
|
programAddress: Address<TProgram>;
|
||||||
|
accounts: {
|
||||||
|
buyer: TAccountMetas[0];
|
||||||
|
seller: TAccountMetas[1];
|
||||||
|
escrowAccount: TAccountMetas[2];
|
||||||
|
vault: TAccountMetas[3];
|
||||||
|
systemProgram: TAccountMetas[4];
|
||||||
|
};
|
||||||
|
data: CompleteInstructionData;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function parseCompleteInstruction<
|
||||||
|
TProgram extends string,
|
||||||
|
TAccountMetas extends readonly AccountMeta[],
|
||||||
|
>(
|
||||||
|
instruction: Instruction<TProgram> &
|
||||||
|
InstructionWithAccounts<TAccountMetas> &
|
||||||
|
InstructionWithData<ReadonlyUint8Array>,
|
||||||
|
): ParsedCompleteInstruction<TProgram, TAccountMetas> {
|
||||||
|
if (instruction.accounts.length < 5) {
|
||||||
|
throw new SolanaError(
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,
|
||||||
|
{
|
||||||
|
actualAccountMetas: instruction.accounts.length,
|
||||||
|
expectedAccountMetas: 5,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
let accountIndex = 0;
|
||||||
|
const getNextAccount = () => {
|
||||||
|
const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;
|
||||||
|
accountIndex += 1;
|
||||||
|
return accountMeta;
|
||||||
|
};
|
||||||
|
return {
|
||||||
|
programAddress: instruction.programAddress,
|
||||||
|
accounts: {
|
||||||
|
buyer: getNextAccount(),
|
||||||
|
seller: getNextAccount(),
|
||||||
|
escrowAccount: getNextAccount(),
|
||||||
|
vault: getNextAccount(),
|
||||||
|
systemProgram: getNextAccount(),
|
||||||
|
},
|
||||||
|
data: getCompleteInstructionDataDecoder().decode(instruction.data),
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,385 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
combineCodec,
|
||||||
|
fixDecoderSize,
|
||||||
|
fixEncoderSize,
|
||||||
|
getAddressDecoder,
|
||||||
|
getAddressEncoder,
|
||||||
|
getBytesDecoder,
|
||||||
|
getBytesEncoder,
|
||||||
|
getOptionDecoder,
|
||||||
|
getOptionEncoder,
|
||||||
|
getStructDecoder,
|
||||||
|
getStructEncoder,
|
||||||
|
getU64Decoder,
|
||||||
|
getU64Encoder,
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,
|
||||||
|
SolanaError,
|
||||||
|
transformEncoder,
|
||||||
|
type AccountMeta,
|
||||||
|
type AccountSignerMeta,
|
||||||
|
type Address,
|
||||||
|
type Codec,
|
||||||
|
type Decoder,
|
||||||
|
type Encoder,
|
||||||
|
type Instruction,
|
||||||
|
type InstructionWithAccounts,
|
||||||
|
type InstructionWithData,
|
||||||
|
type Option,
|
||||||
|
type OptionOrNullable,
|
||||||
|
type ReadonlyAccount,
|
||||||
|
type ReadonlyUint8Array,
|
||||||
|
type TransactionSigner,
|
||||||
|
type WritableAccount,
|
||||||
|
type WritableSignerAccount,
|
||||||
|
} from "@solana/kit";
|
||||||
|
import {
|
||||||
|
getAccountMetaFactory,
|
||||||
|
getAddressFromResolvedInstructionAccount,
|
||||||
|
getNonNullResolvedInstructionInput,
|
||||||
|
type ResolvedInstructionAccount,
|
||||||
|
} from "@solana/program-client-core";
|
||||||
|
import { findEscrowAccountPda, findVaultPda } from "../pdas";
|
||||||
|
import { DESCRO_PROGRAM_ADDRESS } from "../programs";
|
||||||
|
|
||||||
|
export const CREATE_ESCROW_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([
|
||||||
|
253, 215, 165, 116, 36, 108, 68, 80,
|
||||||
|
]);
|
||||||
|
|
||||||
|
export function getCreateEscrowDiscriminatorBytes(): ReadonlyUint8Array {
|
||||||
|
return fixEncoderSize(getBytesEncoder(), 8).encode(
|
||||||
|
CREATE_ESCROW_DISCRIMINATOR,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type CreateEscrowInstruction<
|
||||||
|
TProgram extends string = typeof DESCRO_PROGRAM_ADDRESS,
|
||||||
|
TAccountSeller extends string | AccountMeta<string> = string,
|
||||||
|
TAccountBuyer extends string | AccountMeta<string> = string,
|
||||||
|
TAccountEscrowAccount extends string | AccountMeta<string> = string,
|
||||||
|
TAccountVault extends string | AccountMeta<string> = string,
|
||||||
|
TAccountSystemProgram extends string | AccountMeta<string> =
|
||||||
|
"11111111111111111111111111111111",
|
||||||
|
TRemainingAccounts extends readonly AccountMeta<string>[] = [],
|
||||||
|
> = Instruction<TProgram> &
|
||||||
|
InstructionWithData<ReadonlyUint8Array> &
|
||||||
|
InstructionWithAccounts<
|
||||||
|
[
|
||||||
|
TAccountSeller extends string
|
||||||
|
? WritableSignerAccount<TAccountSeller> &
|
||||||
|
AccountSignerMeta<TAccountSeller>
|
||||||
|
: TAccountSeller,
|
||||||
|
TAccountBuyer extends string
|
||||||
|
? ReadonlyAccount<TAccountBuyer>
|
||||||
|
: TAccountBuyer,
|
||||||
|
TAccountEscrowAccount extends string
|
||||||
|
? WritableAccount<TAccountEscrowAccount>
|
||||||
|
: TAccountEscrowAccount,
|
||||||
|
TAccountVault extends string
|
||||||
|
? WritableAccount<TAccountVault>
|
||||||
|
: TAccountVault,
|
||||||
|
TAccountSystemProgram extends string
|
||||||
|
? ReadonlyAccount<TAccountSystemProgram>
|
||||||
|
: TAccountSystemProgram,
|
||||||
|
...TRemainingAccounts,
|
||||||
|
]
|
||||||
|
>;
|
||||||
|
|
||||||
|
export type CreateEscrowInstructionData = {
|
||||||
|
discriminator: ReadonlyUint8Array;
|
||||||
|
amount: bigint;
|
||||||
|
disputeResolver: Option<Address>;
|
||||||
|
escrowId: bigint;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type CreateEscrowInstructionDataArgs = {
|
||||||
|
amount: number | bigint;
|
||||||
|
disputeResolver: OptionOrNullable<Address>;
|
||||||
|
escrowId: number | bigint;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function getCreateEscrowInstructionDataEncoder(): Encoder<CreateEscrowInstructionDataArgs> {
|
||||||
|
return transformEncoder(
|
||||||
|
getStructEncoder([
|
||||||
|
["discriminator", fixEncoderSize(getBytesEncoder(), 8)],
|
||||||
|
["amount", getU64Encoder()],
|
||||||
|
["disputeResolver", getOptionEncoder(getAddressEncoder())],
|
||||||
|
["escrowId", getU64Encoder()],
|
||||||
|
]),
|
||||||
|
(value) => ({ ...value, discriminator: CREATE_ESCROW_DISCRIMINATOR }),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getCreateEscrowInstructionDataDecoder(): Decoder<CreateEscrowInstructionData> {
|
||||||
|
return getStructDecoder([
|
||||||
|
["discriminator", fixDecoderSize(getBytesDecoder(), 8)],
|
||||||
|
["amount", getU64Decoder()],
|
||||||
|
["disputeResolver", getOptionDecoder(getAddressDecoder())],
|
||||||
|
["escrowId", getU64Decoder()],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getCreateEscrowInstructionDataCodec(): Codec<
|
||||||
|
CreateEscrowInstructionDataArgs,
|
||||||
|
CreateEscrowInstructionData
|
||||||
|
> {
|
||||||
|
return combineCodec(
|
||||||
|
getCreateEscrowInstructionDataEncoder(),
|
||||||
|
getCreateEscrowInstructionDataDecoder(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type CreateEscrowAsyncInput<
|
||||||
|
TAccountSeller extends string = string,
|
||||||
|
TAccountBuyer extends string = string,
|
||||||
|
TAccountEscrowAccount extends string = string,
|
||||||
|
TAccountVault extends string = string,
|
||||||
|
TAccountSystemProgram extends string = string,
|
||||||
|
> = {
|
||||||
|
seller: TransactionSigner<TAccountSeller>;
|
||||||
|
buyer: Address<TAccountBuyer>;
|
||||||
|
escrowAccount?: Address<TAccountEscrowAccount>;
|
||||||
|
vault?: Address<TAccountVault>;
|
||||||
|
systemProgram?: Address<TAccountSystemProgram>;
|
||||||
|
amount: CreateEscrowInstructionDataArgs["amount"];
|
||||||
|
disputeResolver: CreateEscrowInstructionDataArgs["disputeResolver"];
|
||||||
|
escrowId: CreateEscrowInstructionDataArgs["escrowId"];
|
||||||
|
};
|
||||||
|
|
||||||
|
export async function getCreateEscrowInstructionAsync<
|
||||||
|
TAccountSeller extends string,
|
||||||
|
TAccountBuyer extends string,
|
||||||
|
TAccountEscrowAccount extends string,
|
||||||
|
TAccountVault extends string,
|
||||||
|
TAccountSystemProgram extends string,
|
||||||
|
TProgramAddress extends Address = typeof DESCRO_PROGRAM_ADDRESS,
|
||||||
|
>(
|
||||||
|
input: CreateEscrowAsyncInput<
|
||||||
|
TAccountSeller,
|
||||||
|
TAccountBuyer,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>,
|
||||||
|
config?: { programAddress?: TProgramAddress },
|
||||||
|
): Promise<
|
||||||
|
CreateEscrowInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountSeller,
|
||||||
|
TAccountBuyer,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>
|
||||||
|
> {
|
||||||
|
// Program address.
|
||||||
|
const programAddress = config?.programAddress ?? DESCRO_PROGRAM_ADDRESS;
|
||||||
|
|
||||||
|
// Original accounts.
|
||||||
|
const originalAccounts = {
|
||||||
|
seller: { value: input.seller ?? null, isWritable: true },
|
||||||
|
buyer: { value: input.buyer ?? null, isWritable: false },
|
||||||
|
escrowAccount: { value: input.escrowAccount ?? null, isWritable: true },
|
||||||
|
vault: { value: input.vault ?? null, isWritable: true },
|
||||||
|
systemProgram: { value: input.systemProgram ?? null, isWritable: false },
|
||||||
|
};
|
||||||
|
const accounts = originalAccounts as Record<
|
||||||
|
keyof typeof originalAccounts,
|
||||||
|
ResolvedInstructionAccount
|
||||||
|
>;
|
||||||
|
|
||||||
|
// Original args.
|
||||||
|
const args = { ...input };
|
||||||
|
|
||||||
|
// Resolve default values.
|
||||||
|
if (!accounts.escrowAccount.value) {
|
||||||
|
accounts.escrowAccount.value = await findEscrowAccountPda({
|
||||||
|
seller: getAddressFromResolvedInstructionAccount(
|
||||||
|
"seller",
|
||||||
|
accounts.seller.value,
|
||||||
|
),
|
||||||
|
escrowId: getNonNullResolvedInstructionInput("escrowId", args.escrowId),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (!accounts.vault.value) {
|
||||||
|
accounts.vault.value = await findVaultPda({
|
||||||
|
escrowAccount: getAddressFromResolvedInstructionAccount(
|
||||||
|
"escrowAccount",
|
||||||
|
accounts.escrowAccount.value,
|
||||||
|
),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (!accounts.systemProgram.value) {
|
||||||
|
accounts.systemProgram.value =
|
||||||
|
"11111111111111111111111111111111" as Address<"11111111111111111111111111111111">;
|
||||||
|
}
|
||||||
|
|
||||||
|
const getAccountMeta = getAccountMetaFactory(programAddress, "programId");
|
||||||
|
return Object.freeze({
|
||||||
|
accounts: [
|
||||||
|
getAccountMeta("seller", accounts.seller),
|
||||||
|
getAccountMeta("buyer", accounts.buyer),
|
||||||
|
getAccountMeta("escrowAccount", accounts.escrowAccount),
|
||||||
|
getAccountMeta("vault", accounts.vault),
|
||||||
|
getAccountMeta("systemProgram", accounts.systemProgram),
|
||||||
|
],
|
||||||
|
data: getCreateEscrowInstructionDataEncoder().encode(
|
||||||
|
args as CreateEscrowInstructionDataArgs,
|
||||||
|
),
|
||||||
|
programAddress,
|
||||||
|
} as CreateEscrowInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountSeller,
|
||||||
|
TAccountBuyer,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type CreateEscrowInput<
|
||||||
|
TAccountSeller extends string = string,
|
||||||
|
TAccountBuyer extends string = string,
|
||||||
|
TAccountEscrowAccount extends string = string,
|
||||||
|
TAccountVault extends string = string,
|
||||||
|
TAccountSystemProgram extends string = string,
|
||||||
|
> = {
|
||||||
|
seller: TransactionSigner<TAccountSeller>;
|
||||||
|
buyer: Address<TAccountBuyer>;
|
||||||
|
escrowAccount: Address<TAccountEscrowAccount>;
|
||||||
|
vault: Address<TAccountVault>;
|
||||||
|
systemProgram?: Address<TAccountSystemProgram>;
|
||||||
|
amount: CreateEscrowInstructionDataArgs["amount"];
|
||||||
|
disputeResolver: CreateEscrowInstructionDataArgs["disputeResolver"];
|
||||||
|
escrowId: CreateEscrowInstructionDataArgs["escrowId"];
|
||||||
|
};
|
||||||
|
|
||||||
|
export function getCreateEscrowInstruction<
|
||||||
|
TAccountSeller extends string,
|
||||||
|
TAccountBuyer extends string,
|
||||||
|
TAccountEscrowAccount extends string,
|
||||||
|
TAccountVault extends string,
|
||||||
|
TAccountSystemProgram extends string,
|
||||||
|
TProgramAddress extends Address = typeof DESCRO_PROGRAM_ADDRESS,
|
||||||
|
>(
|
||||||
|
input: CreateEscrowInput<
|
||||||
|
TAccountSeller,
|
||||||
|
TAccountBuyer,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>,
|
||||||
|
config?: { programAddress?: TProgramAddress },
|
||||||
|
): CreateEscrowInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountSeller,
|
||||||
|
TAccountBuyer,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountSystemProgram
|
||||||
|
> {
|
||||||
|
// Program address.
|
||||||
|
const programAddress = config?.programAddress ?? DESCRO_PROGRAM_ADDRESS;
|
||||||
|
|
||||||
|
// Original accounts.
|
||||||
|
const originalAccounts = {
|
||||||
|
seller: { value: input.seller ?? null, isWritable: true },
|
||||||
|
buyer: { value: input.buyer ?? null, isWritable: false },
|
||||||
|
escrowAccount: { value: input.escrowAccount ?? null, isWritable: true },
|
||||||
|
vault: { value: input.vault ?? null, isWritable: true },
|
||||||
|
systemProgram: { value: input.systemProgram ?? null, isWritable: false },
|
||||||
|
};
|
||||||
|
const accounts = originalAccounts as Record<
|
||||||
|
keyof typeof originalAccounts,
|
||||||
|
ResolvedInstructionAccount
|
||||||
|
>;
|
||||||
|
|
||||||
|
// Original args.
|
||||||
|
const args = { ...input };
|
||||||
|
|
||||||
|
// Resolve default values.
|
||||||
|
if (!accounts.systemProgram.value) {
|
||||||
|
accounts.systemProgram.value =
|
||||||
|
"11111111111111111111111111111111" as Address<"11111111111111111111111111111111">;
|
||||||
|
}
|
||||||
|
|
||||||
|
const getAccountMeta = getAccountMetaFactory(programAddress, "programId");
|
||||||
|
return Object.freeze({
|
||||||
|
accounts: [
|
||||||
|
getAccountMeta("seller", accounts.seller),
|
||||||
|
getAccountMeta("buyer", accounts.buyer),
|
||||||
|
getAccountMeta("escrowAccount", accounts.escrowAccount),
|
||||||
|
getAccountMeta("vault", accounts.vault),
|
||||||
|
getAccountMeta("systemProgram", accounts.systemProgram),
|
||||||
|
],
|
||||||
|
data: getCreateEscrowInstructionDataEncoder().encode(
|
||||||
|
args as CreateEscrowInstructionDataArgs,
|
||||||
|
),
|
||||||
|
programAddress,
|
||||||
|
} as CreateEscrowInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountSeller,
|
||||||
|
TAccountBuyer,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ParsedCreateEscrowInstruction<
|
||||||
|
TProgram extends string = typeof DESCRO_PROGRAM_ADDRESS,
|
||||||
|
TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],
|
||||||
|
> = {
|
||||||
|
programAddress: Address<TProgram>;
|
||||||
|
accounts: {
|
||||||
|
seller: TAccountMetas[0];
|
||||||
|
buyer: TAccountMetas[1];
|
||||||
|
escrowAccount: TAccountMetas[2];
|
||||||
|
vault: TAccountMetas[3];
|
||||||
|
systemProgram: TAccountMetas[4];
|
||||||
|
};
|
||||||
|
data: CreateEscrowInstructionData;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function parseCreateEscrowInstruction<
|
||||||
|
TProgram extends string,
|
||||||
|
TAccountMetas extends readonly AccountMeta[],
|
||||||
|
>(
|
||||||
|
instruction: Instruction<TProgram> &
|
||||||
|
InstructionWithAccounts<TAccountMetas> &
|
||||||
|
InstructionWithData<ReadonlyUint8Array>,
|
||||||
|
): ParsedCreateEscrowInstruction<TProgram, TAccountMetas> {
|
||||||
|
if (instruction.accounts.length < 5) {
|
||||||
|
throw new SolanaError(
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,
|
||||||
|
{
|
||||||
|
actualAccountMetas: instruction.accounts.length,
|
||||||
|
expectedAccountMetas: 5,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
let accountIndex = 0;
|
||||||
|
const getNextAccount = () => {
|
||||||
|
const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;
|
||||||
|
accountIndex += 1;
|
||||||
|
return accountMeta;
|
||||||
|
};
|
||||||
|
return {
|
||||||
|
programAddress: instruction.programAddress,
|
||||||
|
accounts: {
|
||||||
|
seller: getNextAccount(),
|
||||||
|
buyer: getNextAccount(),
|
||||||
|
escrowAccount: getNextAccount(),
|
||||||
|
vault: getNextAccount(),
|
||||||
|
systemProgram: getNextAccount(),
|
||||||
|
},
|
||||||
|
data: getCreateEscrowInstructionDataDecoder().decode(instruction.data),
|
||||||
|
};
|
||||||
|
}
|
||||||
310
sdk/src/generated/descro/src/generated/instructions/deposit.ts
Normal file
310
sdk/src/generated/descro/src/generated/instructions/deposit.ts
Normal file
@@ -0,0 +1,310 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
combineCodec,
|
||||||
|
fixDecoderSize,
|
||||||
|
fixEncoderSize,
|
||||||
|
getBytesDecoder,
|
||||||
|
getBytesEncoder,
|
||||||
|
getStructDecoder,
|
||||||
|
getStructEncoder,
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,
|
||||||
|
SolanaError,
|
||||||
|
transformEncoder,
|
||||||
|
type AccountMeta,
|
||||||
|
type AccountSignerMeta,
|
||||||
|
type Address,
|
||||||
|
type FixedSizeCodec,
|
||||||
|
type FixedSizeDecoder,
|
||||||
|
type FixedSizeEncoder,
|
||||||
|
type Instruction,
|
||||||
|
type InstructionWithAccounts,
|
||||||
|
type InstructionWithData,
|
||||||
|
type ReadonlyAccount,
|
||||||
|
type ReadonlyUint8Array,
|
||||||
|
type TransactionSigner,
|
||||||
|
type WritableAccount,
|
||||||
|
type WritableSignerAccount,
|
||||||
|
} from "@solana/kit";
|
||||||
|
import {
|
||||||
|
getAccountMetaFactory,
|
||||||
|
getAddressFromResolvedInstructionAccount,
|
||||||
|
type ResolvedInstructionAccount,
|
||||||
|
} from "@solana/program-client-core";
|
||||||
|
import { findVaultPda } from "../pdas";
|
||||||
|
import { DESCRO_PROGRAM_ADDRESS } from "../programs";
|
||||||
|
|
||||||
|
export const DEPOSIT_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([
|
||||||
|
242, 35, 198, 137, 82, 225, 242, 182,
|
||||||
|
]);
|
||||||
|
|
||||||
|
export function getDepositDiscriminatorBytes(): ReadonlyUint8Array {
|
||||||
|
return fixEncoderSize(getBytesEncoder(), 8).encode(DEPOSIT_DISCRIMINATOR);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type DepositInstruction<
|
||||||
|
TProgram extends string = typeof DESCRO_PROGRAM_ADDRESS,
|
||||||
|
TAccountBuyer extends string | AccountMeta<string> = string,
|
||||||
|
TAccountEscrowAccount extends string | AccountMeta<string> = string,
|
||||||
|
TAccountVault extends string | AccountMeta<string> = string,
|
||||||
|
TAccountSystemProgram extends string | AccountMeta<string> =
|
||||||
|
"11111111111111111111111111111111",
|
||||||
|
TRemainingAccounts extends readonly AccountMeta<string>[] = [],
|
||||||
|
> = Instruction<TProgram> &
|
||||||
|
InstructionWithData<ReadonlyUint8Array> &
|
||||||
|
InstructionWithAccounts<
|
||||||
|
[
|
||||||
|
TAccountBuyer extends string
|
||||||
|
? WritableSignerAccount<TAccountBuyer> &
|
||||||
|
AccountSignerMeta<TAccountBuyer>
|
||||||
|
: TAccountBuyer,
|
||||||
|
TAccountEscrowAccount extends string
|
||||||
|
? WritableAccount<TAccountEscrowAccount>
|
||||||
|
: TAccountEscrowAccount,
|
||||||
|
TAccountVault extends string
|
||||||
|
? WritableAccount<TAccountVault>
|
||||||
|
: TAccountVault,
|
||||||
|
TAccountSystemProgram extends string
|
||||||
|
? ReadonlyAccount<TAccountSystemProgram>
|
||||||
|
: TAccountSystemProgram,
|
||||||
|
...TRemainingAccounts,
|
||||||
|
]
|
||||||
|
>;
|
||||||
|
|
||||||
|
export type DepositInstructionData = { discriminator: ReadonlyUint8Array };
|
||||||
|
|
||||||
|
export type DepositInstructionDataArgs = {};
|
||||||
|
|
||||||
|
export function getDepositInstructionDataEncoder(): FixedSizeEncoder<DepositInstructionDataArgs> {
|
||||||
|
return transformEncoder(
|
||||||
|
getStructEncoder([["discriminator", fixEncoderSize(getBytesEncoder(), 8)]]),
|
||||||
|
(value) => ({ ...value, discriminator: DEPOSIT_DISCRIMINATOR }),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getDepositInstructionDataDecoder(): FixedSizeDecoder<DepositInstructionData> {
|
||||||
|
return getStructDecoder([
|
||||||
|
["discriminator", fixDecoderSize(getBytesDecoder(), 8)],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getDepositInstructionDataCodec(): FixedSizeCodec<
|
||||||
|
DepositInstructionDataArgs,
|
||||||
|
DepositInstructionData
|
||||||
|
> {
|
||||||
|
return combineCodec(
|
||||||
|
getDepositInstructionDataEncoder(),
|
||||||
|
getDepositInstructionDataDecoder(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type DepositAsyncInput<
|
||||||
|
TAccountBuyer extends string = string,
|
||||||
|
TAccountEscrowAccount extends string = string,
|
||||||
|
TAccountVault extends string = string,
|
||||||
|
TAccountSystemProgram extends string = string,
|
||||||
|
> = {
|
||||||
|
buyer: TransactionSigner<TAccountBuyer>;
|
||||||
|
escrowAccount: Address<TAccountEscrowAccount>;
|
||||||
|
vault?: Address<TAccountVault>;
|
||||||
|
systemProgram?: Address<TAccountSystemProgram>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export async function getDepositInstructionAsync<
|
||||||
|
TAccountBuyer extends string,
|
||||||
|
TAccountEscrowAccount extends string,
|
||||||
|
TAccountVault extends string,
|
||||||
|
TAccountSystemProgram extends string,
|
||||||
|
TProgramAddress extends Address = typeof DESCRO_PROGRAM_ADDRESS,
|
||||||
|
>(
|
||||||
|
input: DepositAsyncInput<
|
||||||
|
TAccountBuyer,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>,
|
||||||
|
config?: { programAddress?: TProgramAddress },
|
||||||
|
): Promise<
|
||||||
|
DepositInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountBuyer,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>
|
||||||
|
> {
|
||||||
|
// Program address.
|
||||||
|
const programAddress = config?.programAddress ?? DESCRO_PROGRAM_ADDRESS;
|
||||||
|
|
||||||
|
// Original accounts.
|
||||||
|
const originalAccounts = {
|
||||||
|
buyer: { value: input.buyer ?? null, isWritable: true },
|
||||||
|
escrowAccount: { value: input.escrowAccount ?? null, isWritable: true },
|
||||||
|
vault: { value: input.vault ?? null, isWritable: true },
|
||||||
|
systemProgram: { value: input.systemProgram ?? null, isWritable: false },
|
||||||
|
};
|
||||||
|
const accounts = originalAccounts as Record<
|
||||||
|
keyof typeof originalAccounts,
|
||||||
|
ResolvedInstructionAccount
|
||||||
|
>;
|
||||||
|
|
||||||
|
// Resolve default values.
|
||||||
|
if (!accounts.vault.value) {
|
||||||
|
accounts.vault.value = await findVaultPda({
|
||||||
|
escrowAccount: getAddressFromResolvedInstructionAccount(
|
||||||
|
"escrowAccount",
|
||||||
|
accounts.escrowAccount.value,
|
||||||
|
),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (!accounts.systemProgram.value) {
|
||||||
|
accounts.systemProgram.value =
|
||||||
|
"11111111111111111111111111111111" as Address<"11111111111111111111111111111111">;
|
||||||
|
}
|
||||||
|
|
||||||
|
const getAccountMeta = getAccountMetaFactory(programAddress, "programId");
|
||||||
|
return Object.freeze({
|
||||||
|
accounts: [
|
||||||
|
getAccountMeta("buyer", accounts.buyer),
|
||||||
|
getAccountMeta("escrowAccount", accounts.escrowAccount),
|
||||||
|
getAccountMeta("vault", accounts.vault),
|
||||||
|
getAccountMeta("systemProgram", accounts.systemProgram),
|
||||||
|
],
|
||||||
|
data: getDepositInstructionDataEncoder().encode({}),
|
||||||
|
programAddress,
|
||||||
|
} as DepositInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountBuyer,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type DepositInput<
|
||||||
|
TAccountBuyer extends string = string,
|
||||||
|
TAccountEscrowAccount extends string = string,
|
||||||
|
TAccountVault extends string = string,
|
||||||
|
TAccountSystemProgram extends string = string,
|
||||||
|
> = {
|
||||||
|
buyer: TransactionSigner<TAccountBuyer>;
|
||||||
|
escrowAccount: Address<TAccountEscrowAccount>;
|
||||||
|
vault: Address<TAccountVault>;
|
||||||
|
systemProgram?: Address<TAccountSystemProgram>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function getDepositInstruction<
|
||||||
|
TAccountBuyer extends string,
|
||||||
|
TAccountEscrowAccount extends string,
|
||||||
|
TAccountVault extends string,
|
||||||
|
TAccountSystemProgram extends string,
|
||||||
|
TProgramAddress extends Address = typeof DESCRO_PROGRAM_ADDRESS,
|
||||||
|
>(
|
||||||
|
input: DepositInput<
|
||||||
|
TAccountBuyer,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>,
|
||||||
|
config?: { programAddress?: TProgramAddress },
|
||||||
|
): DepositInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountBuyer,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountSystemProgram
|
||||||
|
> {
|
||||||
|
// Program address.
|
||||||
|
const programAddress = config?.programAddress ?? DESCRO_PROGRAM_ADDRESS;
|
||||||
|
|
||||||
|
// Original accounts.
|
||||||
|
const originalAccounts = {
|
||||||
|
buyer: { value: input.buyer ?? null, isWritable: true },
|
||||||
|
escrowAccount: { value: input.escrowAccount ?? null, isWritable: true },
|
||||||
|
vault: { value: input.vault ?? null, isWritable: true },
|
||||||
|
systemProgram: { value: input.systemProgram ?? null, isWritable: false },
|
||||||
|
};
|
||||||
|
const accounts = originalAccounts as Record<
|
||||||
|
keyof typeof originalAccounts,
|
||||||
|
ResolvedInstructionAccount
|
||||||
|
>;
|
||||||
|
|
||||||
|
// Resolve default values.
|
||||||
|
if (!accounts.systemProgram.value) {
|
||||||
|
accounts.systemProgram.value =
|
||||||
|
"11111111111111111111111111111111" as Address<"11111111111111111111111111111111">;
|
||||||
|
}
|
||||||
|
|
||||||
|
const getAccountMeta = getAccountMetaFactory(programAddress, "programId");
|
||||||
|
return Object.freeze({
|
||||||
|
accounts: [
|
||||||
|
getAccountMeta("buyer", accounts.buyer),
|
||||||
|
getAccountMeta("escrowAccount", accounts.escrowAccount),
|
||||||
|
getAccountMeta("vault", accounts.vault),
|
||||||
|
getAccountMeta("systemProgram", accounts.systemProgram),
|
||||||
|
],
|
||||||
|
data: getDepositInstructionDataEncoder().encode({}),
|
||||||
|
programAddress,
|
||||||
|
} as DepositInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountBuyer,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ParsedDepositInstruction<
|
||||||
|
TProgram extends string = typeof DESCRO_PROGRAM_ADDRESS,
|
||||||
|
TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],
|
||||||
|
> = {
|
||||||
|
programAddress: Address<TProgram>;
|
||||||
|
accounts: {
|
||||||
|
buyer: TAccountMetas[0];
|
||||||
|
escrowAccount: TAccountMetas[1];
|
||||||
|
vault: TAccountMetas[2];
|
||||||
|
systemProgram: TAccountMetas[3];
|
||||||
|
};
|
||||||
|
data: DepositInstructionData;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function parseDepositInstruction<
|
||||||
|
TProgram extends string,
|
||||||
|
TAccountMetas extends readonly AccountMeta[],
|
||||||
|
>(
|
||||||
|
instruction: Instruction<TProgram> &
|
||||||
|
InstructionWithAccounts<TAccountMetas> &
|
||||||
|
InstructionWithData<ReadonlyUint8Array>,
|
||||||
|
): ParsedDepositInstruction<TProgram, TAccountMetas> {
|
||||||
|
if (instruction.accounts.length < 4) {
|
||||||
|
throw new SolanaError(
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,
|
||||||
|
{
|
||||||
|
actualAccountMetas: instruction.accounts.length,
|
||||||
|
expectedAccountMetas: 4,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
let accountIndex = 0;
|
||||||
|
const getNextAccount = () => {
|
||||||
|
const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;
|
||||||
|
accountIndex += 1;
|
||||||
|
return accountMeta;
|
||||||
|
};
|
||||||
|
return {
|
||||||
|
programAddress: instruction.programAddress,
|
||||||
|
accounts: {
|
||||||
|
buyer: getNextAccount(),
|
||||||
|
escrowAccount: getNextAccount(),
|
||||||
|
vault: getNextAccount(),
|
||||||
|
systemProgram: getNextAccount(),
|
||||||
|
},
|
||||||
|
data: getDepositInstructionDataDecoder().decode(instruction.data),
|
||||||
|
};
|
||||||
|
}
|
||||||
183
sdk/src/generated/descro/src/generated/instructions/dispute.ts
Normal file
183
sdk/src/generated/descro/src/generated/instructions/dispute.ts
Normal file
@@ -0,0 +1,183 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
combineCodec,
|
||||||
|
fixDecoderSize,
|
||||||
|
fixEncoderSize,
|
||||||
|
getBytesDecoder,
|
||||||
|
getBytesEncoder,
|
||||||
|
getStructDecoder,
|
||||||
|
getStructEncoder,
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,
|
||||||
|
SolanaError,
|
||||||
|
transformEncoder,
|
||||||
|
type AccountMeta,
|
||||||
|
type AccountSignerMeta,
|
||||||
|
type Address,
|
||||||
|
type FixedSizeCodec,
|
||||||
|
type FixedSizeDecoder,
|
||||||
|
type FixedSizeEncoder,
|
||||||
|
type Instruction,
|
||||||
|
type InstructionWithAccounts,
|
||||||
|
type InstructionWithData,
|
||||||
|
type ReadonlySignerAccount,
|
||||||
|
type ReadonlyUint8Array,
|
||||||
|
type TransactionSigner,
|
||||||
|
type WritableAccount,
|
||||||
|
} from "@solana/kit";
|
||||||
|
import {
|
||||||
|
getAccountMetaFactory,
|
||||||
|
type ResolvedInstructionAccount,
|
||||||
|
} from "@solana/program-client-core";
|
||||||
|
import { DESCRO_PROGRAM_ADDRESS } from "../programs";
|
||||||
|
|
||||||
|
export const DISPUTE_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([
|
||||||
|
216, 92, 128, 146, 202, 85, 135, 73,
|
||||||
|
]);
|
||||||
|
|
||||||
|
export function getDisputeDiscriminatorBytes(): ReadonlyUint8Array {
|
||||||
|
return fixEncoderSize(getBytesEncoder(), 8).encode(DISPUTE_DISCRIMINATOR);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type DisputeInstruction<
|
||||||
|
TProgram extends string = typeof DESCRO_PROGRAM_ADDRESS,
|
||||||
|
TAccountInitiator extends string | AccountMeta<string> = string,
|
||||||
|
TAccountEscrowAccount extends string | AccountMeta<string> = string,
|
||||||
|
TRemainingAccounts extends readonly AccountMeta<string>[] = [],
|
||||||
|
> = Instruction<TProgram> &
|
||||||
|
InstructionWithData<ReadonlyUint8Array> &
|
||||||
|
InstructionWithAccounts<
|
||||||
|
[
|
||||||
|
TAccountInitiator extends string
|
||||||
|
? ReadonlySignerAccount<TAccountInitiator> &
|
||||||
|
AccountSignerMeta<TAccountInitiator>
|
||||||
|
: TAccountInitiator,
|
||||||
|
TAccountEscrowAccount extends string
|
||||||
|
? WritableAccount<TAccountEscrowAccount>
|
||||||
|
: TAccountEscrowAccount,
|
||||||
|
...TRemainingAccounts,
|
||||||
|
]
|
||||||
|
>;
|
||||||
|
|
||||||
|
export type DisputeInstructionData = { discriminator: ReadonlyUint8Array };
|
||||||
|
|
||||||
|
export type DisputeInstructionDataArgs = {};
|
||||||
|
|
||||||
|
export function getDisputeInstructionDataEncoder(): FixedSizeEncoder<DisputeInstructionDataArgs> {
|
||||||
|
return transformEncoder(
|
||||||
|
getStructEncoder([["discriminator", fixEncoderSize(getBytesEncoder(), 8)]]),
|
||||||
|
(value) => ({ ...value, discriminator: DISPUTE_DISCRIMINATOR }),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getDisputeInstructionDataDecoder(): FixedSizeDecoder<DisputeInstructionData> {
|
||||||
|
return getStructDecoder([
|
||||||
|
["discriminator", fixDecoderSize(getBytesDecoder(), 8)],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getDisputeInstructionDataCodec(): FixedSizeCodec<
|
||||||
|
DisputeInstructionDataArgs,
|
||||||
|
DisputeInstructionData
|
||||||
|
> {
|
||||||
|
return combineCodec(
|
||||||
|
getDisputeInstructionDataEncoder(),
|
||||||
|
getDisputeInstructionDataDecoder(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type DisputeInput<
|
||||||
|
TAccountInitiator extends string = string,
|
||||||
|
TAccountEscrowAccount extends string = string,
|
||||||
|
> = {
|
||||||
|
initiator: TransactionSigner<TAccountInitiator>;
|
||||||
|
escrowAccount: Address<TAccountEscrowAccount>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function getDisputeInstruction<
|
||||||
|
TAccountInitiator extends string,
|
||||||
|
TAccountEscrowAccount extends string,
|
||||||
|
TProgramAddress extends Address = typeof DESCRO_PROGRAM_ADDRESS,
|
||||||
|
>(
|
||||||
|
input: DisputeInput<TAccountInitiator, TAccountEscrowAccount>,
|
||||||
|
config?: { programAddress?: TProgramAddress },
|
||||||
|
): DisputeInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountInitiator,
|
||||||
|
TAccountEscrowAccount
|
||||||
|
> {
|
||||||
|
// Program address.
|
||||||
|
const programAddress = config?.programAddress ?? DESCRO_PROGRAM_ADDRESS;
|
||||||
|
|
||||||
|
// Original accounts.
|
||||||
|
const originalAccounts = {
|
||||||
|
initiator: { value: input.initiator ?? null, isWritable: false },
|
||||||
|
escrowAccount: { value: input.escrowAccount ?? null, isWritable: true },
|
||||||
|
};
|
||||||
|
const accounts = originalAccounts as Record<
|
||||||
|
keyof typeof originalAccounts,
|
||||||
|
ResolvedInstructionAccount
|
||||||
|
>;
|
||||||
|
|
||||||
|
const getAccountMeta = getAccountMetaFactory(programAddress, "programId");
|
||||||
|
return Object.freeze({
|
||||||
|
accounts: [
|
||||||
|
getAccountMeta("initiator", accounts.initiator),
|
||||||
|
getAccountMeta("escrowAccount", accounts.escrowAccount),
|
||||||
|
],
|
||||||
|
data: getDisputeInstructionDataEncoder().encode({}),
|
||||||
|
programAddress,
|
||||||
|
} as DisputeInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountInitiator,
|
||||||
|
TAccountEscrowAccount
|
||||||
|
>);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ParsedDisputeInstruction<
|
||||||
|
TProgram extends string = typeof DESCRO_PROGRAM_ADDRESS,
|
||||||
|
TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],
|
||||||
|
> = {
|
||||||
|
programAddress: Address<TProgram>;
|
||||||
|
accounts: {
|
||||||
|
initiator: TAccountMetas[0];
|
||||||
|
escrowAccount: TAccountMetas[1];
|
||||||
|
};
|
||||||
|
data: DisputeInstructionData;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function parseDisputeInstruction<
|
||||||
|
TProgram extends string,
|
||||||
|
TAccountMetas extends readonly AccountMeta[],
|
||||||
|
>(
|
||||||
|
instruction: Instruction<TProgram> &
|
||||||
|
InstructionWithAccounts<TAccountMetas> &
|
||||||
|
InstructionWithData<ReadonlyUint8Array>,
|
||||||
|
): ParsedDisputeInstruction<TProgram, TAccountMetas> {
|
||||||
|
if (instruction.accounts.length < 2) {
|
||||||
|
throw new SolanaError(
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,
|
||||||
|
{
|
||||||
|
actualAccountMetas: instruction.accounts.length,
|
||||||
|
expectedAccountMetas: 2,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
let accountIndex = 0;
|
||||||
|
const getNextAccount = () => {
|
||||||
|
const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;
|
||||||
|
accountIndex += 1;
|
||||||
|
return accountMeta;
|
||||||
|
};
|
||||||
|
return {
|
||||||
|
programAddress: instruction.programAddress,
|
||||||
|
accounts: { initiator: getNextAccount(), escrowAccount: getNextAccount() },
|
||||||
|
data: getDisputeInstructionDataDecoder().decode(instruction.data),
|
||||||
|
};
|
||||||
|
}
|
||||||
14
sdk/src/generated/descro/src/generated/instructions/index.ts
Normal file
14
sdk/src/generated/descro/src/generated/instructions/index.ts
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
export * from "./cancel";
|
||||||
|
export * from "./complete";
|
||||||
|
export * from "./createEscrow";
|
||||||
|
export * from "./deposit";
|
||||||
|
export * from "./dispute";
|
||||||
|
export * from "./resolve";
|
||||||
460
sdk/src/generated/descro/src/generated/instructions/resolve.ts
Normal file
460
sdk/src/generated/descro/src/generated/instructions/resolve.ts
Normal file
@@ -0,0 +1,460 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
combineCodec,
|
||||||
|
fixDecoderSize,
|
||||||
|
fixEncoderSize,
|
||||||
|
getBytesDecoder,
|
||||||
|
getBytesEncoder,
|
||||||
|
getStructDecoder,
|
||||||
|
getStructEncoder,
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,
|
||||||
|
SolanaError,
|
||||||
|
transformEncoder,
|
||||||
|
type AccountMeta,
|
||||||
|
type AccountSignerMeta,
|
||||||
|
type Address,
|
||||||
|
type FixedSizeCodec,
|
||||||
|
type FixedSizeDecoder,
|
||||||
|
type FixedSizeEncoder,
|
||||||
|
type Instruction,
|
||||||
|
type InstructionWithAccounts,
|
||||||
|
type InstructionWithData,
|
||||||
|
type ReadonlyAccount,
|
||||||
|
type ReadonlySignerAccount,
|
||||||
|
type ReadonlyUint8Array,
|
||||||
|
type TransactionSigner,
|
||||||
|
type WritableAccount,
|
||||||
|
} from "@solana/kit";
|
||||||
|
import {
|
||||||
|
getAccountMetaFactory,
|
||||||
|
getAddressFromResolvedInstructionAccount,
|
||||||
|
type ResolvedInstructionAccount,
|
||||||
|
} from "@solana/program-client-core";
|
||||||
|
import { findEscrowAuthorityPda, findVaultPda } from "../pdas";
|
||||||
|
import { DESCRO_PROGRAM_ADDRESS } from "../programs";
|
||||||
|
import {
|
||||||
|
getWinnerDecoder,
|
||||||
|
getWinnerEncoder,
|
||||||
|
type Winner,
|
||||||
|
type WinnerArgs,
|
||||||
|
} from "../types";
|
||||||
|
|
||||||
|
export const RESOLVE_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([
|
||||||
|
246, 150, 236, 206, 108, 63, 58, 10,
|
||||||
|
]);
|
||||||
|
|
||||||
|
export function getResolveDiscriminatorBytes(): ReadonlyUint8Array {
|
||||||
|
return fixEncoderSize(getBytesEncoder(), 8).encode(RESOLVE_DISCRIMINATOR);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ResolveInstruction<
|
||||||
|
TProgram extends string = typeof DESCRO_PROGRAM_ADDRESS,
|
||||||
|
TAccountResolver extends string | AccountMeta<string> = string,
|
||||||
|
TAccountWinner extends string | AccountMeta<string> = string,
|
||||||
|
TAccountSeller extends string | AccountMeta<string> = string,
|
||||||
|
TAccountEscrowAccount extends string | AccountMeta<string> = string,
|
||||||
|
TAccountVault extends string | AccountMeta<string> = string,
|
||||||
|
TAccountResolverEntry extends string | AccountMeta<string> = string,
|
||||||
|
TAccountEscrowAuthority extends string | AccountMeta<string> = string,
|
||||||
|
TAccountRegistryProgram extends string | AccountMeta<string> = string,
|
||||||
|
TAccountSystemProgram extends string | AccountMeta<string> =
|
||||||
|
"11111111111111111111111111111111",
|
||||||
|
TRemainingAccounts extends readonly AccountMeta<string>[] = [],
|
||||||
|
> = Instruction<TProgram> &
|
||||||
|
InstructionWithData<ReadonlyUint8Array> &
|
||||||
|
InstructionWithAccounts<
|
||||||
|
[
|
||||||
|
TAccountResolver extends string
|
||||||
|
? ReadonlySignerAccount<TAccountResolver> &
|
||||||
|
AccountSignerMeta<TAccountResolver>
|
||||||
|
: TAccountResolver,
|
||||||
|
TAccountWinner extends string
|
||||||
|
? WritableAccount<TAccountWinner>
|
||||||
|
: TAccountWinner,
|
||||||
|
TAccountSeller extends string
|
||||||
|
? WritableAccount<TAccountSeller>
|
||||||
|
: TAccountSeller,
|
||||||
|
TAccountEscrowAccount extends string
|
||||||
|
? WritableAccount<TAccountEscrowAccount>
|
||||||
|
: TAccountEscrowAccount,
|
||||||
|
TAccountVault extends string
|
||||||
|
? WritableAccount<TAccountVault>
|
||||||
|
: TAccountVault,
|
||||||
|
TAccountResolverEntry extends string
|
||||||
|
? WritableAccount<TAccountResolverEntry>
|
||||||
|
: TAccountResolverEntry,
|
||||||
|
TAccountEscrowAuthority extends string
|
||||||
|
? ReadonlyAccount<TAccountEscrowAuthority>
|
||||||
|
: TAccountEscrowAuthority,
|
||||||
|
TAccountRegistryProgram extends string
|
||||||
|
? ReadonlyAccount<TAccountRegistryProgram>
|
||||||
|
: TAccountRegistryProgram,
|
||||||
|
TAccountSystemProgram extends string
|
||||||
|
? ReadonlyAccount<TAccountSystemProgram>
|
||||||
|
: TAccountSystemProgram,
|
||||||
|
...TRemainingAccounts,
|
||||||
|
]
|
||||||
|
>;
|
||||||
|
|
||||||
|
export type ResolveInstructionData = {
|
||||||
|
discriminator: ReadonlyUint8Array;
|
||||||
|
winner: Winner;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type ResolveInstructionDataArgs = { winner: WinnerArgs };
|
||||||
|
|
||||||
|
export function getResolveInstructionDataEncoder(): FixedSizeEncoder<ResolveInstructionDataArgs> {
|
||||||
|
return transformEncoder(
|
||||||
|
getStructEncoder([
|
||||||
|
["discriminator", fixEncoderSize(getBytesEncoder(), 8)],
|
||||||
|
["winner", getWinnerEncoder()],
|
||||||
|
]),
|
||||||
|
(value) => ({ ...value, discriminator: RESOLVE_DISCRIMINATOR }),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getResolveInstructionDataDecoder(): FixedSizeDecoder<ResolveInstructionData> {
|
||||||
|
return getStructDecoder([
|
||||||
|
["discriminator", fixDecoderSize(getBytesDecoder(), 8)],
|
||||||
|
["winner", getWinnerDecoder()],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getResolveInstructionDataCodec(): FixedSizeCodec<
|
||||||
|
ResolveInstructionDataArgs,
|
||||||
|
ResolveInstructionData
|
||||||
|
> {
|
||||||
|
return combineCodec(
|
||||||
|
getResolveInstructionDataEncoder(),
|
||||||
|
getResolveInstructionDataDecoder(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ResolveAsyncInput<
|
||||||
|
TAccountResolver extends string = string,
|
||||||
|
TAccountWinner extends string = string,
|
||||||
|
TAccountSeller extends string = string,
|
||||||
|
TAccountEscrowAccount extends string = string,
|
||||||
|
TAccountVault extends string = string,
|
||||||
|
TAccountResolverEntry extends string = string,
|
||||||
|
TAccountEscrowAuthority extends string = string,
|
||||||
|
TAccountRegistryProgram extends string = string,
|
||||||
|
TAccountSystemProgram extends string = string,
|
||||||
|
> = {
|
||||||
|
resolver: TransactionSigner<TAccountResolver>;
|
||||||
|
winner: Address<TAccountWinner>;
|
||||||
|
seller: Address<TAccountSeller>;
|
||||||
|
escrowAccount: Address<TAccountEscrowAccount>;
|
||||||
|
vault?: Address<TAccountVault>;
|
||||||
|
resolverEntry: Address<TAccountResolverEntry>;
|
||||||
|
escrowAuthority?: Address<TAccountEscrowAuthority>;
|
||||||
|
registryProgram: Address<TAccountRegistryProgram>;
|
||||||
|
systemProgram?: Address<TAccountSystemProgram>;
|
||||||
|
winnerArg: ResolveInstructionDataArgs["winner"];
|
||||||
|
};
|
||||||
|
|
||||||
|
export async function getResolveInstructionAsync<
|
||||||
|
TAccountResolver extends string,
|
||||||
|
TAccountWinner extends string,
|
||||||
|
TAccountSeller extends string,
|
||||||
|
TAccountEscrowAccount extends string,
|
||||||
|
TAccountVault extends string,
|
||||||
|
TAccountResolverEntry extends string,
|
||||||
|
TAccountEscrowAuthority extends string,
|
||||||
|
TAccountRegistryProgram extends string,
|
||||||
|
TAccountSystemProgram extends string,
|
||||||
|
TProgramAddress extends Address = typeof DESCRO_PROGRAM_ADDRESS,
|
||||||
|
>(
|
||||||
|
input: ResolveAsyncInput<
|
||||||
|
TAccountResolver,
|
||||||
|
TAccountWinner,
|
||||||
|
TAccountSeller,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountResolverEntry,
|
||||||
|
TAccountEscrowAuthority,
|
||||||
|
TAccountRegistryProgram,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>,
|
||||||
|
config?: { programAddress?: TProgramAddress },
|
||||||
|
): Promise<
|
||||||
|
ResolveInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountResolver,
|
||||||
|
TAccountWinner,
|
||||||
|
TAccountSeller,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountResolverEntry,
|
||||||
|
TAccountEscrowAuthority,
|
||||||
|
TAccountRegistryProgram,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>
|
||||||
|
> {
|
||||||
|
// Program address.
|
||||||
|
const programAddress = config?.programAddress ?? DESCRO_PROGRAM_ADDRESS;
|
||||||
|
|
||||||
|
// Original accounts.
|
||||||
|
const originalAccounts = {
|
||||||
|
resolver: { value: input.resolver ?? null, isWritable: false },
|
||||||
|
winner: { value: input.winner ?? null, isWritable: true },
|
||||||
|
seller: { value: input.seller ?? null, isWritable: true },
|
||||||
|
escrowAccount: { value: input.escrowAccount ?? null, isWritable: true },
|
||||||
|
vault: { value: input.vault ?? null, isWritable: true },
|
||||||
|
resolverEntry: { value: input.resolverEntry ?? null, isWritable: true },
|
||||||
|
escrowAuthority: {
|
||||||
|
value: input.escrowAuthority ?? null,
|
||||||
|
isWritable: false,
|
||||||
|
},
|
||||||
|
registryProgram: {
|
||||||
|
value: input.registryProgram ?? null,
|
||||||
|
isWritable: false,
|
||||||
|
},
|
||||||
|
systemProgram: { value: input.systemProgram ?? null, isWritable: false },
|
||||||
|
};
|
||||||
|
const accounts = originalAccounts as Record<
|
||||||
|
keyof typeof originalAccounts,
|
||||||
|
ResolvedInstructionAccount
|
||||||
|
>;
|
||||||
|
|
||||||
|
// Original args.
|
||||||
|
const args = { ...input, winner: input.winnerArg };
|
||||||
|
|
||||||
|
// Resolve default values.
|
||||||
|
if (!accounts.vault.value) {
|
||||||
|
accounts.vault.value = await findVaultPda({
|
||||||
|
escrowAccount: getAddressFromResolvedInstructionAccount(
|
||||||
|
"escrowAccount",
|
||||||
|
accounts.escrowAccount.value,
|
||||||
|
),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (!accounts.escrowAuthority.value) {
|
||||||
|
accounts.escrowAuthority.value = await findEscrowAuthorityPda();
|
||||||
|
}
|
||||||
|
if (!accounts.systemProgram.value) {
|
||||||
|
accounts.systemProgram.value =
|
||||||
|
"11111111111111111111111111111111" as Address<"11111111111111111111111111111111">;
|
||||||
|
}
|
||||||
|
|
||||||
|
const getAccountMeta = getAccountMetaFactory(programAddress, "programId");
|
||||||
|
return Object.freeze({
|
||||||
|
accounts: [
|
||||||
|
getAccountMeta("resolver", accounts.resolver),
|
||||||
|
getAccountMeta("winner", accounts.winner),
|
||||||
|
getAccountMeta("seller", accounts.seller),
|
||||||
|
getAccountMeta("escrowAccount", accounts.escrowAccount),
|
||||||
|
getAccountMeta("vault", accounts.vault),
|
||||||
|
getAccountMeta("resolverEntry", accounts.resolverEntry),
|
||||||
|
getAccountMeta("escrowAuthority", accounts.escrowAuthority),
|
||||||
|
getAccountMeta("registryProgram", accounts.registryProgram),
|
||||||
|
getAccountMeta("systemProgram", accounts.systemProgram),
|
||||||
|
],
|
||||||
|
data: getResolveInstructionDataEncoder().encode(
|
||||||
|
args as ResolveInstructionDataArgs,
|
||||||
|
),
|
||||||
|
programAddress,
|
||||||
|
} as ResolveInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountResolver,
|
||||||
|
TAccountWinner,
|
||||||
|
TAccountSeller,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountResolverEntry,
|
||||||
|
TAccountEscrowAuthority,
|
||||||
|
TAccountRegistryProgram,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ResolveInput<
|
||||||
|
TAccountResolver extends string = string,
|
||||||
|
TAccountWinner extends string = string,
|
||||||
|
TAccountSeller extends string = string,
|
||||||
|
TAccountEscrowAccount extends string = string,
|
||||||
|
TAccountVault extends string = string,
|
||||||
|
TAccountResolverEntry extends string = string,
|
||||||
|
TAccountEscrowAuthority extends string = string,
|
||||||
|
TAccountRegistryProgram extends string = string,
|
||||||
|
TAccountSystemProgram extends string = string,
|
||||||
|
> = {
|
||||||
|
resolver: TransactionSigner<TAccountResolver>;
|
||||||
|
winner: Address<TAccountWinner>;
|
||||||
|
seller: Address<TAccountSeller>;
|
||||||
|
escrowAccount: Address<TAccountEscrowAccount>;
|
||||||
|
vault: Address<TAccountVault>;
|
||||||
|
resolverEntry: Address<TAccountResolverEntry>;
|
||||||
|
escrowAuthority: Address<TAccountEscrowAuthority>;
|
||||||
|
registryProgram: Address<TAccountRegistryProgram>;
|
||||||
|
systemProgram?: Address<TAccountSystemProgram>;
|
||||||
|
winnerArg: ResolveInstructionDataArgs["winner"];
|
||||||
|
};
|
||||||
|
|
||||||
|
export function getResolveInstruction<
|
||||||
|
TAccountResolver extends string,
|
||||||
|
TAccountWinner extends string,
|
||||||
|
TAccountSeller extends string,
|
||||||
|
TAccountEscrowAccount extends string,
|
||||||
|
TAccountVault extends string,
|
||||||
|
TAccountResolverEntry extends string,
|
||||||
|
TAccountEscrowAuthority extends string,
|
||||||
|
TAccountRegistryProgram extends string,
|
||||||
|
TAccountSystemProgram extends string,
|
||||||
|
TProgramAddress extends Address = typeof DESCRO_PROGRAM_ADDRESS,
|
||||||
|
>(
|
||||||
|
input: ResolveInput<
|
||||||
|
TAccountResolver,
|
||||||
|
TAccountWinner,
|
||||||
|
TAccountSeller,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountResolverEntry,
|
||||||
|
TAccountEscrowAuthority,
|
||||||
|
TAccountRegistryProgram,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>,
|
||||||
|
config?: { programAddress?: TProgramAddress },
|
||||||
|
): ResolveInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountResolver,
|
||||||
|
TAccountWinner,
|
||||||
|
TAccountSeller,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountResolverEntry,
|
||||||
|
TAccountEscrowAuthority,
|
||||||
|
TAccountRegistryProgram,
|
||||||
|
TAccountSystemProgram
|
||||||
|
> {
|
||||||
|
// Program address.
|
||||||
|
const programAddress = config?.programAddress ?? DESCRO_PROGRAM_ADDRESS;
|
||||||
|
|
||||||
|
// Original accounts.
|
||||||
|
const originalAccounts = {
|
||||||
|
resolver: { value: input.resolver ?? null, isWritable: false },
|
||||||
|
winner: { value: input.winner ?? null, isWritable: true },
|
||||||
|
seller: { value: input.seller ?? null, isWritable: true },
|
||||||
|
escrowAccount: { value: input.escrowAccount ?? null, isWritable: true },
|
||||||
|
vault: { value: input.vault ?? null, isWritable: true },
|
||||||
|
resolverEntry: { value: input.resolverEntry ?? null, isWritable: true },
|
||||||
|
escrowAuthority: {
|
||||||
|
value: input.escrowAuthority ?? null,
|
||||||
|
isWritable: false,
|
||||||
|
},
|
||||||
|
registryProgram: {
|
||||||
|
value: input.registryProgram ?? null,
|
||||||
|
isWritable: false,
|
||||||
|
},
|
||||||
|
systemProgram: { value: input.systemProgram ?? null, isWritable: false },
|
||||||
|
};
|
||||||
|
const accounts = originalAccounts as Record<
|
||||||
|
keyof typeof originalAccounts,
|
||||||
|
ResolvedInstructionAccount
|
||||||
|
>;
|
||||||
|
|
||||||
|
// Original args.
|
||||||
|
const args = { ...input, winner: input.winnerArg };
|
||||||
|
|
||||||
|
// Resolve default values.
|
||||||
|
if (!accounts.systemProgram.value) {
|
||||||
|
accounts.systemProgram.value =
|
||||||
|
"11111111111111111111111111111111" as Address<"11111111111111111111111111111111">;
|
||||||
|
}
|
||||||
|
|
||||||
|
const getAccountMeta = getAccountMetaFactory(programAddress, "programId");
|
||||||
|
return Object.freeze({
|
||||||
|
accounts: [
|
||||||
|
getAccountMeta("resolver", accounts.resolver),
|
||||||
|
getAccountMeta("winner", accounts.winner),
|
||||||
|
getAccountMeta("seller", accounts.seller),
|
||||||
|
getAccountMeta("escrowAccount", accounts.escrowAccount),
|
||||||
|
getAccountMeta("vault", accounts.vault),
|
||||||
|
getAccountMeta("resolverEntry", accounts.resolverEntry),
|
||||||
|
getAccountMeta("escrowAuthority", accounts.escrowAuthority),
|
||||||
|
getAccountMeta("registryProgram", accounts.registryProgram),
|
||||||
|
getAccountMeta("systemProgram", accounts.systemProgram),
|
||||||
|
],
|
||||||
|
data: getResolveInstructionDataEncoder().encode(
|
||||||
|
args as ResolveInstructionDataArgs,
|
||||||
|
),
|
||||||
|
programAddress,
|
||||||
|
} as ResolveInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountResolver,
|
||||||
|
TAccountWinner,
|
||||||
|
TAccountSeller,
|
||||||
|
TAccountEscrowAccount,
|
||||||
|
TAccountVault,
|
||||||
|
TAccountResolverEntry,
|
||||||
|
TAccountEscrowAuthority,
|
||||||
|
TAccountRegistryProgram,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ParsedResolveInstruction<
|
||||||
|
TProgram extends string = typeof DESCRO_PROGRAM_ADDRESS,
|
||||||
|
TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],
|
||||||
|
> = {
|
||||||
|
programAddress: Address<TProgram>;
|
||||||
|
accounts: {
|
||||||
|
resolver: TAccountMetas[0];
|
||||||
|
winner: TAccountMetas[1];
|
||||||
|
seller: TAccountMetas[2];
|
||||||
|
escrowAccount: TAccountMetas[3];
|
||||||
|
vault: TAccountMetas[4];
|
||||||
|
resolverEntry: TAccountMetas[5];
|
||||||
|
escrowAuthority: TAccountMetas[6];
|
||||||
|
registryProgram: TAccountMetas[7];
|
||||||
|
systemProgram: TAccountMetas[8];
|
||||||
|
};
|
||||||
|
data: ResolveInstructionData;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function parseResolveInstruction<
|
||||||
|
TProgram extends string,
|
||||||
|
TAccountMetas extends readonly AccountMeta[],
|
||||||
|
>(
|
||||||
|
instruction: Instruction<TProgram> &
|
||||||
|
InstructionWithAccounts<TAccountMetas> &
|
||||||
|
InstructionWithData<ReadonlyUint8Array>,
|
||||||
|
): ParsedResolveInstruction<TProgram, TAccountMetas> {
|
||||||
|
if (instruction.accounts.length < 9) {
|
||||||
|
throw new SolanaError(
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,
|
||||||
|
{
|
||||||
|
actualAccountMetas: instruction.accounts.length,
|
||||||
|
expectedAccountMetas: 9,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
let accountIndex = 0;
|
||||||
|
const getNextAccount = () => {
|
||||||
|
const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;
|
||||||
|
accountIndex += 1;
|
||||||
|
return accountMeta;
|
||||||
|
};
|
||||||
|
return {
|
||||||
|
programAddress: instruction.programAddress,
|
||||||
|
accounts: {
|
||||||
|
resolver: getNextAccount(),
|
||||||
|
winner: getNextAccount(),
|
||||||
|
seller: getNextAccount(),
|
||||||
|
escrowAccount: getNextAccount(),
|
||||||
|
vault: getNextAccount(),
|
||||||
|
resolverEntry: getNextAccount(),
|
||||||
|
escrowAuthority: getNextAccount(),
|
||||||
|
registryProgram: getNextAccount(),
|
||||||
|
systemProgram: getNextAccount(),
|
||||||
|
},
|
||||||
|
data: getResolveInstructionDataDecoder().decode(instruction.data),
|
||||||
|
};
|
||||||
|
}
|
||||||
38
sdk/src/generated/descro/src/generated/pdas/escrowAccount.ts
Normal file
38
sdk/src/generated/descro/src/generated/pdas/escrowAccount.ts
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
getAddressEncoder,
|
||||||
|
getBytesEncoder,
|
||||||
|
getProgramDerivedAddress,
|
||||||
|
getU64Encoder,
|
||||||
|
type Address,
|
||||||
|
type ProgramDerivedAddress,
|
||||||
|
} from "@solana/kit";
|
||||||
|
|
||||||
|
export type EscrowAccountSeeds = {
|
||||||
|
seller: Address;
|
||||||
|
escrowId: number | bigint;
|
||||||
|
};
|
||||||
|
|
||||||
|
export async function findEscrowAccountPda(
|
||||||
|
seeds: EscrowAccountSeeds,
|
||||||
|
config: { programAddress?: Address | undefined } = {},
|
||||||
|
): Promise<ProgramDerivedAddress> {
|
||||||
|
const {
|
||||||
|
programAddress = "DjVR4EuYV6USMJFfsGZwhZ3y8rtWsmG8EvDY96GTqqi3" as Address<"DjVR4EuYV6USMJFfsGZwhZ3y8rtWsmG8EvDY96GTqqi3">,
|
||||||
|
} = config;
|
||||||
|
return await getProgramDerivedAddress({
|
||||||
|
programAddress,
|
||||||
|
seeds: [
|
||||||
|
getBytesEncoder().encode(new Uint8Array([101, 115, 99, 114, 111, 119])),
|
||||||
|
getAddressEncoder().encode(seeds.seller),
|
||||||
|
getU64Encoder().encode(seeds.escrowId),
|
||||||
|
],
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
getBytesEncoder,
|
||||||
|
getProgramDerivedAddress,
|
||||||
|
type Address,
|
||||||
|
type ProgramDerivedAddress,
|
||||||
|
} from "@solana/kit";
|
||||||
|
|
||||||
|
export async function findEscrowAuthorityPda(
|
||||||
|
config: { programAddress?: Address | undefined } = {},
|
||||||
|
): Promise<ProgramDerivedAddress> {
|
||||||
|
const {
|
||||||
|
programAddress = "DjVR4EuYV6USMJFfsGZwhZ3y8rtWsmG8EvDY96GTqqi3" as Address<"DjVR4EuYV6USMJFfsGZwhZ3y8rtWsmG8EvDY96GTqqi3">,
|
||||||
|
} = config;
|
||||||
|
return await getProgramDerivedAddress({
|
||||||
|
programAddress,
|
||||||
|
seeds: [
|
||||||
|
getBytesEncoder().encode(
|
||||||
|
new Uint8Array([
|
||||||
|
101, 115, 99, 114, 111, 119, 95, 97, 117, 116, 104, 111, 114, 105,
|
||||||
|
116, 121,
|
||||||
|
]),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
});
|
||||||
|
}
|
||||||
11
sdk/src/generated/descro/src/generated/pdas/index.ts
Normal file
11
sdk/src/generated/descro/src/generated/pdas/index.ts
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
export * from "./escrowAccount";
|
||||||
|
export * from "./escrowAuthority";
|
||||||
|
export * from "./vault";
|
||||||
35
sdk/src/generated/descro/src/generated/pdas/vault.ts
Normal file
35
sdk/src/generated/descro/src/generated/pdas/vault.ts
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
getAddressEncoder,
|
||||||
|
getBytesEncoder,
|
||||||
|
getProgramDerivedAddress,
|
||||||
|
type Address,
|
||||||
|
type ProgramDerivedAddress,
|
||||||
|
} from "@solana/kit";
|
||||||
|
|
||||||
|
export type VaultSeeds = {
|
||||||
|
escrowAccount: Address;
|
||||||
|
};
|
||||||
|
|
||||||
|
export async function findVaultPda(
|
||||||
|
seeds: VaultSeeds,
|
||||||
|
config: { programAddress?: Address | undefined } = {},
|
||||||
|
): Promise<ProgramDerivedAddress> {
|
||||||
|
const {
|
||||||
|
programAddress = "DjVR4EuYV6USMJFfsGZwhZ3y8rtWsmG8EvDY96GTqqi3" as Address<"DjVR4EuYV6USMJFfsGZwhZ3y8rtWsmG8EvDY96GTqqi3">,
|
||||||
|
} = config;
|
||||||
|
return await getProgramDerivedAddress({
|
||||||
|
programAddress,
|
||||||
|
seeds: [
|
||||||
|
getBytesEncoder().encode(new Uint8Array([118, 97, 117, 108, 116])),
|
||||||
|
getAddressEncoder().encode(seeds.escrowAccount),
|
||||||
|
],
|
||||||
|
});
|
||||||
|
}
|
||||||
351
sdk/src/generated/descro/src/generated/programs/descro.ts
Normal file
351
sdk/src/generated/descro/src/generated/programs/descro.ts
Normal file
@@ -0,0 +1,351 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
assertIsInstructionWithAccounts,
|
||||||
|
containsBytes,
|
||||||
|
extendClient,
|
||||||
|
fixEncoderSize,
|
||||||
|
getBytesEncoder,
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT,
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION,
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE,
|
||||||
|
SolanaError,
|
||||||
|
type Address,
|
||||||
|
type ClientWithRpc,
|
||||||
|
type ClientWithTransactionPlanning,
|
||||||
|
type ClientWithTransactionSending,
|
||||||
|
type GetAccountInfoApi,
|
||||||
|
type GetMultipleAccountsApi,
|
||||||
|
type Instruction,
|
||||||
|
type InstructionWithData,
|
||||||
|
type ReadonlyUint8Array,
|
||||||
|
} from "@solana/kit";
|
||||||
|
import {
|
||||||
|
addSelfFetchFunctions,
|
||||||
|
addSelfPlanAndSendFunctions,
|
||||||
|
type SelfFetchFunctions,
|
||||||
|
type SelfPlanAndSendFunctions,
|
||||||
|
} from "@solana/program-client-core";
|
||||||
|
import {
|
||||||
|
getEscrowAccountCodec,
|
||||||
|
type EscrowAccount,
|
||||||
|
type EscrowAccountArgs,
|
||||||
|
} from "../accounts";
|
||||||
|
import {
|
||||||
|
getCancelInstruction,
|
||||||
|
getCompleteInstructionAsync,
|
||||||
|
getCreateEscrowInstructionAsync,
|
||||||
|
getDepositInstructionAsync,
|
||||||
|
getDisputeInstruction,
|
||||||
|
getResolveInstructionAsync,
|
||||||
|
parseCancelInstruction,
|
||||||
|
parseCompleteInstruction,
|
||||||
|
parseCreateEscrowInstruction,
|
||||||
|
parseDepositInstruction,
|
||||||
|
parseDisputeInstruction,
|
||||||
|
parseResolveInstruction,
|
||||||
|
type CancelInput,
|
||||||
|
type CompleteAsyncInput,
|
||||||
|
type CreateEscrowAsyncInput,
|
||||||
|
type DepositAsyncInput,
|
||||||
|
type DisputeInput,
|
||||||
|
type ParsedCancelInstruction,
|
||||||
|
type ParsedCompleteInstruction,
|
||||||
|
type ParsedCreateEscrowInstruction,
|
||||||
|
type ParsedDepositInstruction,
|
||||||
|
type ParsedDisputeInstruction,
|
||||||
|
type ParsedResolveInstruction,
|
||||||
|
type ResolveAsyncInput,
|
||||||
|
} from "../instructions";
|
||||||
|
import {
|
||||||
|
findEscrowAccountPda,
|
||||||
|
findEscrowAuthorityPda,
|
||||||
|
findVaultPda,
|
||||||
|
} from "../pdas";
|
||||||
|
|
||||||
|
export const DESCRO_PROGRAM_ADDRESS =
|
||||||
|
"DjVR4EuYV6USMJFfsGZwhZ3y8rtWsmG8EvDY96GTqqi3" as Address<"DjVR4EuYV6USMJFfsGZwhZ3y8rtWsmG8EvDY96GTqqi3">;
|
||||||
|
|
||||||
|
export enum DescroAccount {
|
||||||
|
EscrowAccount,
|
||||||
|
}
|
||||||
|
|
||||||
|
export function identifyDescroAccount(
|
||||||
|
account: { data: ReadonlyUint8Array } | ReadonlyUint8Array,
|
||||||
|
): DescroAccount {
|
||||||
|
const data = "data" in account ? account.data : account;
|
||||||
|
if (
|
||||||
|
containsBytes(
|
||||||
|
data,
|
||||||
|
fixEncoderSize(getBytesEncoder(), 8).encode(
|
||||||
|
new Uint8Array([36, 69, 48, 18, 128, 225, 125, 135]),
|
||||||
|
),
|
||||||
|
0,
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
return DescroAccount.EscrowAccount;
|
||||||
|
}
|
||||||
|
throw new SolanaError(
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT,
|
||||||
|
{ accountData: data, programName: "descro" },
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum DescroInstruction {
|
||||||
|
Cancel,
|
||||||
|
Complete,
|
||||||
|
CreateEscrow,
|
||||||
|
Deposit,
|
||||||
|
Dispute,
|
||||||
|
Resolve,
|
||||||
|
}
|
||||||
|
|
||||||
|
export function identifyDescroInstruction(
|
||||||
|
instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array,
|
||||||
|
): DescroInstruction {
|
||||||
|
const data = "data" in instruction ? instruction.data : instruction;
|
||||||
|
if (
|
||||||
|
containsBytes(
|
||||||
|
data,
|
||||||
|
fixEncoderSize(getBytesEncoder(), 8).encode(
|
||||||
|
new Uint8Array([232, 219, 223, 41, 219, 236, 220, 190]),
|
||||||
|
),
|
||||||
|
0,
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
return DescroInstruction.Cancel;
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
containsBytes(
|
||||||
|
data,
|
||||||
|
fixEncoderSize(getBytesEncoder(), 8).encode(
|
||||||
|
new Uint8Array([0, 77, 224, 147, 136, 25, 88, 76]),
|
||||||
|
),
|
||||||
|
0,
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
return DescroInstruction.Complete;
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
containsBytes(
|
||||||
|
data,
|
||||||
|
fixEncoderSize(getBytesEncoder(), 8).encode(
|
||||||
|
new Uint8Array([253, 215, 165, 116, 36, 108, 68, 80]),
|
||||||
|
),
|
||||||
|
0,
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
return DescroInstruction.CreateEscrow;
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
containsBytes(
|
||||||
|
data,
|
||||||
|
fixEncoderSize(getBytesEncoder(), 8).encode(
|
||||||
|
new Uint8Array([242, 35, 198, 137, 82, 225, 242, 182]),
|
||||||
|
),
|
||||||
|
0,
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
return DescroInstruction.Deposit;
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
containsBytes(
|
||||||
|
data,
|
||||||
|
fixEncoderSize(getBytesEncoder(), 8).encode(
|
||||||
|
new Uint8Array([216, 92, 128, 146, 202, 85, 135, 73]),
|
||||||
|
),
|
||||||
|
0,
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
return DescroInstruction.Dispute;
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
containsBytes(
|
||||||
|
data,
|
||||||
|
fixEncoderSize(getBytesEncoder(), 8).encode(
|
||||||
|
new Uint8Array([246, 150, 236, 206, 108, 63, 58, 10]),
|
||||||
|
),
|
||||||
|
0,
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
return DescroInstruction.Resolve;
|
||||||
|
}
|
||||||
|
throw new SolanaError(
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION,
|
||||||
|
{ instructionData: data, programName: "descro" },
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ParsedDescroInstruction<
|
||||||
|
TProgram extends string = "DjVR4EuYV6USMJFfsGZwhZ3y8rtWsmG8EvDY96GTqqi3",
|
||||||
|
> =
|
||||||
|
| ({
|
||||||
|
instructionType: DescroInstruction.Cancel;
|
||||||
|
} & ParsedCancelInstruction<TProgram>)
|
||||||
|
| ({
|
||||||
|
instructionType: DescroInstruction.Complete;
|
||||||
|
} & ParsedCompleteInstruction<TProgram>)
|
||||||
|
| ({
|
||||||
|
instructionType: DescroInstruction.CreateEscrow;
|
||||||
|
} & ParsedCreateEscrowInstruction<TProgram>)
|
||||||
|
| ({
|
||||||
|
instructionType: DescroInstruction.Deposit;
|
||||||
|
} & ParsedDepositInstruction<TProgram>)
|
||||||
|
| ({
|
||||||
|
instructionType: DescroInstruction.Dispute;
|
||||||
|
} & ParsedDisputeInstruction<TProgram>)
|
||||||
|
| ({
|
||||||
|
instructionType: DescroInstruction.Resolve;
|
||||||
|
} & ParsedResolveInstruction<TProgram>);
|
||||||
|
|
||||||
|
export function parseDescroInstruction<TProgram extends string>(
|
||||||
|
instruction: Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array>,
|
||||||
|
): ParsedDescroInstruction<TProgram> {
|
||||||
|
const instructionType = identifyDescroInstruction(instruction);
|
||||||
|
switch (instructionType) {
|
||||||
|
case DescroInstruction.Cancel: {
|
||||||
|
assertIsInstructionWithAccounts(instruction);
|
||||||
|
return {
|
||||||
|
instructionType: DescroInstruction.Cancel,
|
||||||
|
...parseCancelInstruction(instruction),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
case DescroInstruction.Complete: {
|
||||||
|
assertIsInstructionWithAccounts(instruction);
|
||||||
|
return {
|
||||||
|
instructionType: DescroInstruction.Complete,
|
||||||
|
...parseCompleteInstruction(instruction),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
case DescroInstruction.CreateEscrow: {
|
||||||
|
assertIsInstructionWithAccounts(instruction);
|
||||||
|
return {
|
||||||
|
instructionType: DescroInstruction.CreateEscrow,
|
||||||
|
...parseCreateEscrowInstruction(instruction),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
case DescroInstruction.Deposit: {
|
||||||
|
assertIsInstructionWithAccounts(instruction);
|
||||||
|
return {
|
||||||
|
instructionType: DescroInstruction.Deposit,
|
||||||
|
...parseDepositInstruction(instruction),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
case DescroInstruction.Dispute: {
|
||||||
|
assertIsInstructionWithAccounts(instruction);
|
||||||
|
return {
|
||||||
|
instructionType: DescroInstruction.Dispute,
|
||||||
|
...parseDisputeInstruction(instruction),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
case DescroInstruction.Resolve: {
|
||||||
|
assertIsInstructionWithAccounts(instruction);
|
||||||
|
return {
|
||||||
|
instructionType: DescroInstruction.Resolve,
|
||||||
|
...parseResolveInstruction(instruction),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
throw new SolanaError(
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE,
|
||||||
|
{ instructionType: instructionType as string, programName: "descro" },
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export type DescroPlugin = {
|
||||||
|
accounts: DescroPluginAccounts;
|
||||||
|
instructions: DescroPluginInstructions;
|
||||||
|
pdas: DescroPluginPdas;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type DescroPluginAccounts = {
|
||||||
|
escrowAccount: ReturnType<typeof getEscrowAccountCodec> &
|
||||||
|
SelfFetchFunctions<EscrowAccountArgs, EscrowAccount>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type DescroPluginInstructions = {
|
||||||
|
cancel: (
|
||||||
|
input: CancelInput,
|
||||||
|
) => ReturnType<typeof getCancelInstruction> & SelfPlanAndSendFunctions;
|
||||||
|
complete: (
|
||||||
|
input: CompleteAsyncInput,
|
||||||
|
) => ReturnType<typeof getCompleteInstructionAsync> &
|
||||||
|
SelfPlanAndSendFunctions;
|
||||||
|
createEscrow: (
|
||||||
|
input: CreateEscrowAsyncInput,
|
||||||
|
) => ReturnType<typeof getCreateEscrowInstructionAsync> &
|
||||||
|
SelfPlanAndSendFunctions;
|
||||||
|
deposit: (
|
||||||
|
input: DepositAsyncInput,
|
||||||
|
) => ReturnType<typeof getDepositInstructionAsync> & SelfPlanAndSendFunctions;
|
||||||
|
dispute: (
|
||||||
|
input: DisputeInput,
|
||||||
|
) => ReturnType<typeof getDisputeInstruction> & SelfPlanAndSendFunctions;
|
||||||
|
resolve: (
|
||||||
|
input: ResolveAsyncInput,
|
||||||
|
) => ReturnType<typeof getResolveInstructionAsync> & SelfPlanAndSendFunctions;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type DescroPluginPdas = {
|
||||||
|
vault: typeof findVaultPda;
|
||||||
|
escrowAccount: typeof findEscrowAccountPda;
|
||||||
|
escrowAuthority: typeof findEscrowAuthorityPda;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type DescroPluginRequirements = ClientWithRpc<
|
||||||
|
GetAccountInfoApi & GetMultipleAccountsApi
|
||||||
|
> &
|
||||||
|
ClientWithTransactionPlanning &
|
||||||
|
ClientWithTransactionSending;
|
||||||
|
|
||||||
|
export function descroProgram() {
|
||||||
|
return <T extends DescroPluginRequirements>(
|
||||||
|
client: T,
|
||||||
|
): Omit<T, "descro"> & { descro: DescroPlugin } => {
|
||||||
|
return extendClient(client, {
|
||||||
|
descro: <DescroPlugin>{
|
||||||
|
accounts: {
|
||||||
|
escrowAccount: addSelfFetchFunctions(client, getEscrowAccountCodec()),
|
||||||
|
},
|
||||||
|
instructions: {
|
||||||
|
cancel: (input) =>
|
||||||
|
addSelfPlanAndSendFunctions(client, getCancelInstruction(input)),
|
||||||
|
complete: (input) =>
|
||||||
|
addSelfPlanAndSendFunctions(
|
||||||
|
client,
|
||||||
|
getCompleteInstructionAsync(input),
|
||||||
|
),
|
||||||
|
createEscrow: (input) =>
|
||||||
|
addSelfPlanAndSendFunctions(
|
||||||
|
client,
|
||||||
|
getCreateEscrowInstructionAsync(input),
|
||||||
|
),
|
||||||
|
deposit: (input) =>
|
||||||
|
addSelfPlanAndSendFunctions(
|
||||||
|
client,
|
||||||
|
getDepositInstructionAsync(input),
|
||||||
|
),
|
||||||
|
dispute: (input) =>
|
||||||
|
addSelfPlanAndSendFunctions(client, getDisputeInstruction(input)),
|
||||||
|
resolve: (input) =>
|
||||||
|
addSelfPlanAndSendFunctions(
|
||||||
|
client,
|
||||||
|
getResolveInstructionAsync(input),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
pdas: {
|
||||||
|
vault: findVaultPda,
|
||||||
|
escrowAccount: findEscrowAccountPda,
|
||||||
|
escrowAuthority: findEscrowAuthorityPda,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
9
sdk/src/generated/descro/src/generated/programs/index.ts
Normal file
9
sdk/src/generated/descro/src/generated/programs/index.ts
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
export * from "./descro";
|
||||||
41
sdk/src/generated/descro/src/generated/types/escrowState.ts
Normal file
41
sdk/src/generated/descro/src/generated/types/escrowState.ts
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
combineCodec,
|
||||||
|
getEnumDecoder,
|
||||||
|
getEnumEncoder,
|
||||||
|
type FixedSizeCodec,
|
||||||
|
type FixedSizeDecoder,
|
||||||
|
type FixedSizeEncoder,
|
||||||
|
} from "@solana/kit";
|
||||||
|
|
||||||
|
export enum EscrowState {
|
||||||
|
AwaitingDeposit,
|
||||||
|
Active,
|
||||||
|
Disputed,
|
||||||
|
Complete,
|
||||||
|
Cancelled,
|
||||||
|
}
|
||||||
|
|
||||||
|
export type EscrowStateArgs = EscrowState;
|
||||||
|
|
||||||
|
export function getEscrowStateEncoder(): FixedSizeEncoder<EscrowStateArgs> {
|
||||||
|
return getEnumEncoder(EscrowState);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getEscrowStateDecoder(): FixedSizeDecoder<EscrowState> {
|
||||||
|
return getEnumDecoder(EscrowState);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getEscrowStateCodec(): FixedSizeCodec<
|
||||||
|
EscrowStateArgs,
|
||||||
|
EscrowState
|
||||||
|
> {
|
||||||
|
return combineCodec(getEscrowStateEncoder(), getEscrowStateDecoder());
|
||||||
|
}
|
||||||
10
sdk/src/generated/descro/src/generated/types/index.ts
Normal file
10
sdk/src/generated/descro/src/generated/types/index.ts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
export * from "./escrowState";
|
||||||
|
export * from "./winner";
|
||||||
35
sdk/src/generated/descro/src/generated/types/winner.ts
Normal file
35
sdk/src/generated/descro/src/generated/types/winner.ts
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
combineCodec,
|
||||||
|
getEnumDecoder,
|
||||||
|
getEnumEncoder,
|
||||||
|
type FixedSizeCodec,
|
||||||
|
type FixedSizeDecoder,
|
||||||
|
type FixedSizeEncoder,
|
||||||
|
} from "@solana/kit";
|
||||||
|
|
||||||
|
export enum Winner {
|
||||||
|
Buyer,
|
||||||
|
Seller,
|
||||||
|
}
|
||||||
|
|
||||||
|
export type WinnerArgs = Winner;
|
||||||
|
|
||||||
|
export function getWinnerEncoder(): FixedSizeEncoder<WinnerArgs> {
|
||||||
|
return getEnumEncoder(Winner);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getWinnerDecoder(): FixedSizeDecoder<Winner> {
|
||||||
|
return getEnumDecoder(Winner);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getWinnerCodec(): FixedSizeCodec<WinnerArgs, Winner> {
|
||||||
|
return combineCodec(getWinnerEncoder(), getWinnerDecoder());
|
||||||
|
}
|
||||||
22
sdk/src/generated/descro_ext_resolvers/package.json
Normal file
22
sdk/src/generated/descro_ext_resolvers/package.json
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"name": "js-client",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "src/index.ts",
|
||||||
|
"files": [
|
||||||
|
"./dist/src",
|
||||||
|
"./dist/types",
|
||||||
|
"./src/"
|
||||||
|
],
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"author": "",
|
||||||
|
"peerDependencies": {
|
||||||
|
"@solana/kit": "^6.4.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@solana/program-client-core": "^6.4.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
export * from "./resolverEntry";
|
||||||
@@ -0,0 +1,197 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
addDecoderSizePrefix,
|
||||||
|
addEncoderSizePrefix,
|
||||||
|
assertAccountExists,
|
||||||
|
assertAccountsExist,
|
||||||
|
combineCodec,
|
||||||
|
decodeAccount,
|
||||||
|
fetchEncodedAccount,
|
||||||
|
fetchEncodedAccounts,
|
||||||
|
fixDecoderSize,
|
||||||
|
fixEncoderSize,
|
||||||
|
getAddressDecoder,
|
||||||
|
getAddressEncoder,
|
||||||
|
getBytesDecoder,
|
||||||
|
getBytesEncoder,
|
||||||
|
getI64Decoder,
|
||||||
|
getI64Encoder,
|
||||||
|
getStructDecoder,
|
||||||
|
getStructEncoder,
|
||||||
|
getU16Decoder,
|
||||||
|
getU16Encoder,
|
||||||
|
getU32Decoder,
|
||||||
|
getU32Encoder,
|
||||||
|
getU64Decoder,
|
||||||
|
getU64Encoder,
|
||||||
|
getUtf8Decoder,
|
||||||
|
getUtf8Encoder,
|
||||||
|
transformEncoder,
|
||||||
|
type Account,
|
||||||
|
type Address,
|
||||||
|
type Codec,
|
||||||
|
type Decoder,
|
||||||
|
type EncodedAccount,
|
||||||
|
type Encoder,
|
||||||
|
type FetchAccountConfig,
|
||||||
|
type FetchAccountsConfig,
|
||||||
|
type MaybeAccount,
|
||||||
|
type MaybeEncodedAccount,
|
||||||
|
type ReadonlyUint8Array,
|
||||||
|
} from "@solana/kit";
|
||||||
|
import {
|
||||||
|
getResolverTypeDecoder,
|
||||||
|
getResolverTypeEncoder,
|
||||||
|
type ResolverType,
|
||||||
|
type ResolverTypeArgs,
|
||||||
|
} from "../types";
|
||||||
|
|
||||||
|
export const RESOLVER_ENTRY_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([
|
||||||
|
0, 60, 55, 58, 157, 135, 51, 191,
|
||||||
|
]);
|
||||||
|
|
||||||
|
export function getResolverEntryDiscriminatorBytes(): ReadonlyUint8Array {
|
||||||
|
return fixEncoderSize(getBytesEncoder(), 8).encode(
|
||||||
|
RESOLVER_ENTRY_DISCRIMINATOR,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ResolverEntry = {
|
||||||
|
discriminator: ReadonlyUint8Array;
|
||||||
|
authority: Address;
|
||||||
|
resolverType: ResolverType;
|
||||||
|
name: string;
|
||||||
|
description: string;
|
||||||
|
feeBps: number;
|
||||||
|
feeRecipient: Address;
|
||||||
|
metadataUri: string;
|
||||||
|
totalResolved: bigint;
|
||||||
|
ruledForBuyer: bigint;
|
||||||
|
ruledForSeller: bigint;
|
||||||
|
registeredAt: bigint;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type ResolverEntryArgs = {
|
||||||
|
authority: Address;
|
||||||
|
resolverType: ResolverTypeArgs;
|
||||||
|
name: string;
|
||||||
|
description: string;
|
||||||
|
feeBps: number;
|
||||||
|
feeRecipient: Address;
|
||||||
|
metadataUri: string;
|
||||||
|
totalResolved: number | bigint;
|
||||||
|
ruledForBuyer: number | bigint;
|
||||||
|
ruledForSeller: number | bigint;
|
||||||
|
registeredAt: number | bigint;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Gets the encoder for {@link ResolverEntryArgs} account data. */
|
||||||
|
export function getResolverEntryEncoder(): Encoder<ResolverEntryArgs> {
|
||||||
|
return transformEncoder(
|
||||||
|
getStructEncoder([
|
||||||
|
["discriminator", fixEncoderSize(getBytesEncoder(), 8)],
|
||||||
|
["authority", getAddressEncoder()],
|
||||||
|
["resolverType", getResolverTypeEncoder()],
|
||||||
|
["name", addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],
|
||||||
|
["description", addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],
|
||||||
|
["feeBps", getU16Encoder()],
|
||||||
|
["feeRecipient", getAddressEncoder()],
|
||||||
|
["metadataUri", addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],
|
||||||
|
["totalResolved", getU64Encoder()],
|
||||||
|
["ruledForBuyer", getU64Encoder()],
|
||||||
|
["ruledForSeller", getU64Encoder()],
|
||||||
|
["registeredAt", getI64Encoder()],
|
||||||
|
]),
|
||||||
|
(value) => ({ ...value, discriminator: RESOLVER_ENTRY_DISCRIMINATOR }),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Gets the decoder for {@link ResolverEntry} account data. */
|
||||||
|
export function getResolverEntryDecoder(): Decoder<ResolverEntry> {
|
||||||
|
return getStructDecoder([
|
||||||
|
["discriminator", fixDecoderSize(getBytesDecoder(), 8)],
|
||||||
|
["authority", getAddressDecoder()],
|
||||||
|
["resolverType", getResolverTypeDecoder()],
|
||||||
|
["name", addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],
|
||||||
|
["description", addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],
|
||||||
|
["feeBps", getU16Decoder()],
|
||||||
|
["feeRecipient", getAddressDecoder()],
|
||||||
|
["metadataUri", addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],
|
||||||
|
["totalResolved", getU64Decoder()],
|
||||||
|
["ruledForBuyer", getU64Decoder()],
|
||||||
|
["ruledForSeller", getU64Decoder()],
|
||||||
|
["registeredAt", getI64Decoder()],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Gets the codec for {@link ResolverEntry} account data. */
|
||||||
|
export function getResolverEntryCodec(): Codec<
|
||||||
|
ResolverEntryArgs,
|
||||||
|
ResolverEntry
|
||||||
|
> {
|
||||||
|
return combineCodec(getResolverEntryEncoder(), getResolverEntryDecoder());
|
||||||
|
}
|
||||||
|
|
||||||
|
export function decodeResolverEntry<TAddress extends string = string>(
|
||||||
|
encodedAccount: EncodedAccount<TAddress>,
|
||||||
|
): Account<ResolverEntry, TAddress>;
|
||||||
|
export function decodeResolverEntry<TAddress extends string = string>(
|
||||||
|
encodedAccount: MaybeEncodedAccount<TAddress>,
|
||||||
|
): MaybeAccount<ResolverEntry, TAddress>;
|
||||||
|
export function decodeResolverEntry<TAddress extends string = string>(
|
||||||
|
encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,
|
||||||
|
): Account<ResolverEntry, TAddress> | MaybeAccount<ResolverEntry, TAddress> {
|
||||||
|
return decodeAccount(
|
||||||
|
encodedAccount as MaybeEncodedAccount<TAddress>,
|
||||||
|
getResolverEntryDecoder(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function fetchResolverEntry<TAddress extends string = string>(
|
||||||
|
rpc: Parameters<typeof fetchEncodedAccount>[0],
|
||||||
|
address: Address<TAddress>,
|
||||||
|
config?: FetchAccountConfig,
|
||||||
|
): Promise<Account<ResolverEntry, TAddress>> {
|
||||||
|
const maybeAccount = await fetchMaybeResolverEntry(rpc, address, config);
|
||||||
|
assertAccountExists(maybeAccount);
|
||||||
|
return maybeAccount;
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function fetchMaybeResolverEntry<TAddress extends string = string>(
|
||||||
|
rpc: Parameters<typeof fetchEncodedAccount>[0],
|
||||||
|
address: Address<TAddress>,
|
||||||
|
config?: FetchAccountConfig,
|
||||||
|
): Promise<MaybeAccount<ResolverEntry, TAddress>> {
|
||||||
|
const maybeAccount = await fetchEncodedAccount(rpc, address, config);
|
||||||
|
return decodeResolverEntry(maybeAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function fetchAllResolverEntry(
|
||||||
|
rpc: Parameters<typeof fetchEncodedAccounts>[0],
|
||||||
|
addresses: Array<Address>,
|
||||||
|
config?: FetchAccountsConfig,
|
||||||
|
): Promise<Account<ResolverEntry>[]> {
|
||||||
|
const maybeAccounts = await fetchAllMaybeResolverEntry(
|
||||||
|
rpc,
|
||||||
|
addresses,
|
||||||
|
config,
|
||||||
|
);
|
||||||
|
assertAccountsExist(maybeAccounts);
|
||||||
|
return maybeAccounts;
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function fetchAllMaybeResolverEntry(
|
||||||
|
rpc: Parameters<typeof fetchEncodedAccounts>[0],
|
||||||
|
addresses: Array<Address>,
|
||||||
|
config?: FetchAccountsConfig,
|
||||||
|
): Promise<MaybeAccount<ResolverEntry>[]> {
|
||||||
|
const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);
|
||||||
|
return maybeAccounts.map((maybeAccount) => decodeResolverEntry(maybeAccount));
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
isProgramError,
|
||||||
|
type Address,
|
||||||
|
type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,
|
||||||
|
type SolanaError,
|
||||||
|
} from "@solana/kit";
|
||||||
|
import { DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS } from "../programs";
|
||||||
|
|
||||||
|
/** Unauthorized: Signer is not the registered authority */
|
||||||
|
export const DESCRO_EXT_RESOLVERS_ERROR__UNAUTHORIZED = 0x1770; // 6000
|
||||||
|
/** UnauthorizedCaller: Caller is not the authorized escrow program */
|
||||||
|
export const DESCRO_EXT_RESOLVERS_ERROR__UNAUTHORIZED_CALLER = 0x1771; // 6001
|
||||||
|
/** InvalidFeeBps: Fee basis points must be <= 10000 */
|
||||||
|
export const DESCRO_EXT_RESOLVERS_ERROR__INVALID_FEE_BPS = 0x1772; // 6002
|
||||||
|
/** EmptyName: Name must not be empty */
|
||||||
|
export const DESCRO_EXT_RESOLVERS_ERROR__EMPTY_NAME = 0x1773; // 6003
|
||||||
|
|
||||||
|
export type DescroExtResolversError =
|
||||||
|
| typeof DESCRO_EXT_RESOLVERS_ERROR__EMPTY_NAME
|
||||||
|
| typeof DESCRO_EXT_RESOLVERS_ERROR__INVALID_FEE_BPS
|
||||||
|
| typeof DESCRO_EXT_RESOLVERS_ERROR__UNAUTHORIZED
|
||||||
|
| typeof DESCRO_EXT_RESOLVERS_ERROR__UNAUTHORIZED_CALLER;
|
||||||
|
|
||||||
|
let descroExtResolversErrorMessages:
|
||||||
|
| Record<DescroExtResolversError, string>
|
||||||
|
| undefined;
|
||||||
|
if (process.env["NODE_ENV"] !== "production") {
|
||||||
|
descroExtResolversErrorMessages = {
|
||||||
|
[DESCRO_EXT_RESOLVERS_ERROR__EMPTY_NAME]: `Name must not be empty`,
|
||||||
|
[DESCRO_EXT_RESOLVERS_ERROR__INVALID_FEE_BPS]: `Fee basis points must be <= 10000`,
|
||||||
|
[DESCRO_EXT_RESOLVERS_ERROR__UNAUTHORIZED]: `Signer is not the registered authority`,
|
||||||
|
[DESCRO_EXT_RESOLVERS_ERROR__UNAUTHORIZED_CALLER]: `Caller is not the authorized escrow program`,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getDescroExtResolversErrorMessage(
|
||||||
|
code: DescroExtResolversError,
|
||||||
|
): string {
|
||||||
|
if (process.env["NODE_ENV"] !== "production") {
|
||||||
|
return (
|
||||||
|
descroExtResolversErrorMessages as Record<DescroExtResolversError, string>
|
||||||
|
)[code];
|
||||||
|
}
|
||||||
|
|
||||||
|
return "Error message not available in production bundles.";
|
||||||
|
}
|
||||||
|
|
||||||
|
export function isDescroExtResolversError<
|
||||||
|
TProgramErrorCode extends DescroExtResolversError,
|
||||||
|
>(
|
||||||
|
error: unknown,
|
||||||
|
transactionMessage: {
|
||||||
|
instructions: Record<number, { programAddress: Address }>;
|
||||||
|
},
|
||||||
|
code?: TProgramErrorCode,
|
||||||
|
): error is SolanaError<typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM> &
|
||||||
|
Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {
|
||||||
|
return isProgramError<TProgramErrorCode>(
|
||||||
|
error,
|
||||||
|
transactionMessage,
|
||||||
|
DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS,
|
||||||
|
code,
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
export * from "./descroExtResolvers";
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
export * from "./accounts";
|
||||||
|
export * from "./errors";
|
||||||
|
export * from "./instructions";
|
||||||
|
export * from "./pdas";
|
||||||
|
export * from "./programs";
|
||||||
|
export * from "./types";
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
export * from "./registerResolver";
|
||||||
|
export * from "./updateResolver";
|
||||||
|
export * from "./updateStats";
|
||||||
@@ -0,0 +1,358 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
addDecoderSizePrefix,
|
||||||
|
addEncoderSizePrefix,
|
||||||
|
combineCodec,
|
||||||
|
fixDecoderSize,
|
||||||
|
fixEncoderSize,
|
||||||
|
getAddressDecoder,
|
||||||
|
getAddressEncoder,
|
||||||
|
getBytesDecoder,
|
||||||
|
getBytesEncoder,
|
||||||
|
getStructDecoder,
|
||||||
|
getStructEncoder,
|
||||||
|
getU16Decoder,
|
||||||
|
getU16Encoder,
|
||||||
|
getU32Decoder,
|
||||||
|
getU32Encoder,
|
||||||
|
getUtf8Decoder,
|
||||||
|
getUtf8Encoder,
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,
|
||||||
|
SolanaError,
|
||||||
|
transformEncoder,
|
||||||
|
type AccountMeta,
|
||||||
|
type AccountSignerMeta,
|
||||||
|
type Address,
|
||||||
|
type Codec,
|
||||||
|
type Decoder,
|
||||||
|
type Encoder,
|
||||||
|
type Instruction,
|
||||||
|
type InstructionWithAccounts,
|
||||||
|
type InstructionWithData,
|
||||||
|
type ReadonlyAccount,
|
||||||
|
type ReadonlyUint8Array,
|
||||||
|
type TransactionSigner,
|
||||||
|
type WritableAccount,
|
||||||
|
type WritableSignerAccount,
|
||||||
|
} from "@solana/kit";
|
||||||
|
import {
|
||||||
|
getAccountMetaFactory,
|
||||||
|
getAddressFromResolvedInstructionAccount,
|
||||||
|
type ResolvedInstructionAccount,
|
||||||
|
} from "@solana/program-client-core";
|
||||||
|
import { findResolverEntryPda } from "../pdas";
|
||||||
|
import { DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS } from "../programs";
|
||||||
|
import {
|
||||||
|
getResolverTypeDecoder,
|
||||||
|
getResolverTypeEncoder,
|
||||||
|
type ResolverType,
|
||||||
|
type ResolverTypeArgs,
|
||||||
|
} from "../types";
|
||||||
|
|
||||||
|
export const REGISTER_RESOLVER_DISCRIMINATOR: ReadonlyUint8Array =
|
||||||
|
new Uint8Array([76, 101, 253, 229, 153, 242, 212, 230]);
|
||||||
|
|
||||||
|
export function getRegisterResolverDiscriminatorBytes(): ReadonlyUint8Array {
|
||||||
|
return fixEncoderSize(getBytesEncoder(), 8).encode(
|
||||||
|
REGISTER_RESOLVER_DISCRIMINATOR,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type RegisterResolverInstruction<
|
||||||
|
TProgram extends string = typeof DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS,
|
||||||
|
TAccountAuthority extends string | AccountMeta<string> = string,
|
||||||
|
TAccountResolverEntry extends string | AccountMeta<string> = string,
|
||||||
|
TAccountSystemProgram extends string | AccountMeta<string> =
|
||||||
|
"11111111111111111111111111111111",
|
||||||
|
TRemainingAccounts extends readonly AccountMeta<string>[] = [],
|
||||||
|
> = Instruction<TProgram> &
|
||||||
|
InstructionWithData<ReadonlyUint8Array> &
|
||||||
|
InstructionWithAccounts<
|
||||||
|
[
|
||||||
|
TAccountAuthority extends string
|
||||||
|
? WritableSignerAccount<TAccountAuthority> &
|
||||||
|
AccountSignerMeta<TAccountAuthority>
|
||||||
|
: TAccountAuthority,
|
||||||
|
TAccountResolverEntry extends string
|
||||||
|
? WritableAccount<TAccountResolverEntry>
|
||||||
|
: TAccountResolverEntry,
|
||||||
|
TAccountSystemProgram extends string
|
||||||
|
? ReadonlyAccount<TAccountSystemProgram>
|
||||||
|
: TAccountSystemProgram,
|
||||||
|
...TRemainingAccounts,
|
||||||
|
]
|
||||||
|
>;
|
||||||
|
|
||||||
|
export type RegisterResolverInstructionData = {
|
||||||
|
discriminator: ReadonlyUint8Array;
|
||||||
|
resolverType: ResolverType;
|
||||||
|
name: string;
|
||||||
|
description: string;
|
||||||
|
feeBps: number;
|
||||||
|
feeRecipient: Address;
|
||||||
|
metadataUri: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type RegisterResolverInstructionDataArgs = {
|
||||||
|
resolverType: ResolverTypeArgs;
|
||||||
|
name: string;
|
||||||
|
description: string;
|
||||||
|
feeBps: number;
|
||||||
|
feeRecipient: Address;
|
||||||
|
metadataUri: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function getRegisterResolverInstructionDataEncoder(): Encoder<RegisterResolverInstructionDataArgs> {
|
||||||
|
return transformEncoder(
|
||||||
|
getStructEncoder([
|
||||||
|
["discriminator", fixEncoderSize(getBytesEncoder(), 8)],
|
||||||
|
["resolverType", getResolverTypeEncoder()],
|
||||||
|
["name", addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],
|
||||||
|
["description", addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],
|
||||||
|
["feeBps", getU16Encoder()],
|
||||||
|
["feeRecipient", getAddressEncoder()],
|
||||||
|
["metadataUri", addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],
|
||||||
|
]),
|
||||||
|
(value) => ({ ...value, discriminator: REGISTER_RESOLVER_DISCRIMINATOR }),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getRegisterResolverInstructionDataDecoder(): Decoder<RegisterResolverInstructionData> {
|
||||||
|
return getStructDecoder([
|
||||||
|
["discriminator", fixDecoderSize(getBytesDecoder(), 8)],
|
||||||
|
["resolverType", getResolverTypeDecoder()],
|
||||||
|
["name", addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],
|
||||||
|
["description", addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],
|
||||||
|
["feeBps", getU16Decoder()],
|
||||||
|
["feeRecipient", getAddressDecoder()],
|
||||||
|
["metadataUri", addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getRegisterResolverInstructionDataCodec(): Codec<
|
||||||
|
RegisterResolverInstructionDataArgs,
|
||||||
|
RegisterResolverInstructionData
|
||||||
|
> {
|
||||||
|
return combineCodec(
|
||||||
|
getRegisterResolverInstructionDataEncoder(),
|
||||||
|
getRegisterResolverInstructionDataDecoder(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type RegisterResolverAsyncInput<
|
||||||
|
TAccountAuthority extends string = string,
|
||||||
|
TAccountResolverEntry extends string = string,
|
||||||
|
TAccountSystemProgram extends string = string,
|
||||||
|
> = {
|
||||||
|
authority: TransactionSigner<TAccountAuthority>;
|
||||||
|
resolverEntry?: Address<TAccountResolverEntry>;
|
||||||
|
systemProgram?: Address<TAccountSystemProgram>;
|
||||||
|
resolverType: RegisterResolverInstructionDataArgs["resolverType"];
|
||||||
|
name: RegisterResolverInstructionDataArgs["name"];
|
||||||
|
description: RegisterResolverInstructionDataArgs["description"];
|
||||||
|
feeBps: RegisterResolverInstructionDataArgs["feeBps"];
|
||||||
|
feeRecipient: RegisterResolverInstructionDataArgs["feeRecipient"];
|
||||||
|
metadataUri: RegisterResolverInstructionDataArgs["metadataUri"];
|
||||||
|
};
|
||||||
|
|
||||||
|
export async function getRegisterResolverInstructionAsync<
|
||||||
|
TAccountAuthority extends string,
|
||||||
|
TAccountResolverEntry extends string,
|
||||||
|
TAccountSystemProgram extends string,
|
||||||
|
TProgramAddress extends Address = typeof DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS,
|
||||||
|
>(
|
||||||
|
input: RegisterResolverAsyncInput<
|
||||||
|
TAccountAuthority,
|
||||||
|
TAccountResolverEntry,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>,
|
||||||
|
config?: { programAddress?: TProgramAddress },
|
||||||
|
): Promise<
|
||||||
|
RegisterResolverInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountAuthority,
|
||||||
|
TAccountResolverEntry,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>
|
||||||
|
> {
|
||||||
|
// Program address.
|
||||||
|
const programAddress =
|
||||||
|
config?.programAddress ?? DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS;
|
||||||
|
|
||||||
|
// Original accounts.
|
||||||
|
const originalAccounts = {
|
||||||
|
authority: { value: input.authority ?? null, isWritable: true },
|
||||||
|
resolverEntry: { value: input.resolverEntry ?? null, isWritable: true },
|
||||||
|
systemProgram: { value: input.systemProgram ?? null, isWritable: false },
|
||||||
|
};
|
||||||
|
const accounts = originalAccounts as Record<
|
||||||
|
keyof typeof originalAccounts,
|
||||||
|
ResolvedInstructionAccount
|
||||||
|
>;
|
||||||
|
|
||||||
|
// Original args.
|
||||||
|
const args = { ...input };
|
||||||
|
|
||||||
|
// Resolve default values.
|
||||||
|
if (!accounts.resolverEntry.value) {
|
||||||
|
accounts.resolverEntry.value = await findResolverEntryPda({
|
||||||
|
authority: getAddressFromResolvedInstructionAccount(
|
||||||
|
"authority",
|
||||||
|
accounts.authority.value,
|
||||||
|
),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (!accounts.systemProgram.value) {
|
||||||
|
accounts.systemProgram.value =
|
||||||
|
"11111111111111111111111111111111" as Address<"11111111111111111111111111111111">;
|
||||||
|
}
|
||||||
|
|
||||||
|
const getAccountMeta = getAccountMetaFactory(programAddress, "programId");
|
||||||
|
return Object.freeze({
|
||||||
|
accounts: [
|
||||||
|
getAccountMeta("authority", accounts.authority),
|
||||||
|
getAccountMeta("resolverEntry", accounts.resolverEntry),
|
||||||
|
getAccountMeta("systemProgram", accounts.systemProgram),
|
||||||
|
],
|
||||||
|
data: getRegisterResolverInstructionDataEncoder().encode(
|
||||||
|
args as RegisterResolverInstructionDataArgs,
|
||||||
|
),
|
||||||
|
programAddress,
|
||||||
|
} as RegisterResolverInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountAuthority,
|
||||||
|
TAccountResolverEntry,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type RegisterResolverInput<
|
||||||
|
TAccountAuthority extends string = string,
|
||||||
|
TAccountResolverEntry extends string = string,
|
||||||
|
TAccountSystemProgram extends string = string,
|
||||||
|
> = {
|
||||||
|
authority: TransactionSigner<TAccountAuthority>;
|
||||||
|
resolverEntry: Address<TAccountResolverEntry>;
|
||||||
|
systemProgram?: Address<TAccountSystemProgram>;
|
||||||
|
resolverType: RegisterResolverInstructionDataArgs["resolverType"];
|
||||||
|
name: RegisterResolverInstructionDataArgs["name"];
|
||||||
|
description: RegisterResolverInstructionDataArgs["description"];
|
||||||
|
feeBps: RegisterResolverInstructionDataArgs["feeBps"];
|
||||||
|
feeRecipient: RegisterResolverInstructionDataArgs["feeRecipient"];
|
||||||
|
metadataUri: RegisterResolverInstructionDataArgs["metadataUri"];
|
||||||
|
};
|
||||||
|
|
||||||
|
export function getRegisterResolverInstruction<
|
||||||
|
TAccountAuthority extends string,
|
||||||
|
TAccountResolverEntry extends string,
|
||||||
|
TAccountSystemProgram extends string,
|
||||||
|
TProgramAddress extends Address = typeof DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS,
|
||||||
|
>(
|
||||||
|
input: RegisterResolverInput<
|
||||||
|
TAccountAuthority,
|
||||||
|
TAccountResolverEntry,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>,
|
||||||
|
config?: { programAddress?: TProgramAddress },
|
||||||
|
): RegisterResolverInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountAuthority,
|
||||||
|
TAccountResolverEntry,
|
||||||
|
TAccountSystemProgram
|
||||||
|
> {
|
||||||
|
// Program address.
|
||||||
|
const programAddress =
|
||||||
|
config?.programAddress ?? DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS;
|
||||||
|
|
||||||
|
// Original accounts.
|
||||||
|
const originalAccounts = {
|
||||||
|
authority: { value: input.authority ?? null, isWritable: true },
|
||||||
|
resolverEntry: { value: input.resolverEntry ?? null, isWritable: true },
|
||||||
|
systemProgram: { value: input.systemProgram ?? null, isWritable: false },
|
||||||
|
};
|
||||||
|
const accounts = originalAccounts as Record<
|
||||||
|
keyof typeof originalAccounts,
|
||||||
|
ResolvedInstructionAccount
|
||||||
|
>;
|
||||||
|
|
||||||
|
// Original args.
|
||||||
|
const args = { ...input };
|
||||||
|
|
||||||
|
// Resolve default values.
|
||||||
|
if (!accounts.systemProgram.value) {
|
||||||
|
accounts.systemProgram.value =
|
||||||
|
"11111111111111111111111111111111" as Address<"11111111111111111111111111111111">;
|
||||||
|
}
|
||||||
|
|
||||||
|
const getAccountMeta = getAccountMetaFactory(programAddress, "programId");
|
||||||
|
return Object.freeze({
|
||||||
|
accounts: [
|
||||||
|
getAccountMeta("authority", accounts.authority),
|
||||||
|
getAccountMeta("resolverEntry", accounts.resolverEntry),
|
||||||
|
getAccountMeta("systemProgram", accounts.systemProgram),
|
||||||
|
],
|
||||||
|
data: getRegisterResolverInstructionDataEncoder().encode(
|
||||||
|
args as RegisterResolverInstructionDataArgs,
|
||||||
|
),
|
||||||
|
programAddress,
|
||||||
|
} as RegisterResolverInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountAuthority,
|
||||||
|
TAccountResolverEntry,
|
||||||
|
TAccountSystemProgram
|
||||||
|
>);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ParsedRegisterResolverInstruction<
|
||||||
|
TProgram extends string = typeof DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS,
|
||||||
|
TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],
|
||||||
|
> = {
|
||||||
|
programAddress: Address<TProgram>;
|
||||||
|
accounts: {
|
||||||
|
authority: TAccountMetas[0];
|
||||||
|
resolverEntry: TAccountMetas[1];
|
||||||
|
systemProgram: TAccountMetas[2];
|
||||||
|
};
|
||||||
|
data: RegisterResolverInstructionData;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function parseRegisterResolverInstruction<
|
||||||
|
TProgram extends string,
|
||||||
|
TAccountMetas extends readonly AccountMeta[],
|
||||||
|
>(
|
||||||
|
instruction: Instruction<TProgram> &
|
||||||
|
InstructionWithAccounts<TAccountMetas> &
|
||||||
|
InstructionWithData<ReadonlyUint8Array>,
|
||||||
|
): ParsedRegisterResolverInstruction<TProgram, TAccountMetas> {
|
||||||
|
if (instruction.accounts.length < 3) {
|
||||||
|
throw new SolanaError(
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,
|
||||||
|
{
|
||||||
|
actualAccountMetas: instruction.accounts.length,
|
||||||
|
expectedAccountMetas: 3,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
let accountIndex = 0;
|
||||||
|
const getNextAccount = () => {
|
||||||
|
const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;
|
||||||
|
accountIndex += 1;
|
||||||
|
return accountMeta;
|
||||||
|
};
|
||||||
|
return {
|
||||||
|
programAddress: instruction.programAddress,
|
||||||
|
accounts: {
|
||||||
|
authority: getNextAccount(),
|
||||||
|
resolverEntry: getNextAccount(),
|
||||||
|
systemProgram: getNextAccount(),
|
||||||
|
},
|
||||||
|
data: getRegisterResolverInstructionDataDecoder().decode(instruction.data),
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,296 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
addDecoderSizePrefix,
|
||||||
|
addEncoderSizePrefix,
|
||||||
|
combineCodec,
|
||||||
|
fixDecoderSize,
|
||||||
|
fixEncoderSize,
|
||||||
|
getBytesDecoder,
|
||||||
|
getBytesEncoder,
|
||||||
|
getStructDecoder,
|
||||||
|
getStructEncoder,
|
||||||
|
getU16Decoder,
|
||||||
|
getU16Encoder,
|
||||||
|
getU32Decoder,
|
||||||
|
getU32Encoder,
|
||||||
|
getUtf8Decoder,
|
||||||
|
getUtf8Encoder,
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,
|
||||||
|
SolanaError,
|
||||||
|
transformEncoder,
|
||||||
|
type AccountMeta,
|
||||||
|
type AccountSignerMeta,
|
||||||
|
type Address,
|
||||||
|
type Codec,
|
||||||
|
type Decoder,
|
||||||
|
type Encoder,
|
||||||
|
type Instruction,
|
||||||
|
type InstructionWithAccounts,
|
||||||
|
type InstructionWithData,
|
||||||
|
type ReadonlySignerAccount,
|
||||||
|
type ReadonlyUint8Array,
|
||||||
|
type TransactionSigner,
|
||||||
|
type WritableAccount,
|
||||||
|
} from "@solana/kit";
|
||||||
|
import {
|
||||||
|
getAccountMetaFactory,
|
||||||
|
getAddressFromResolvedInstructionAccount,
|
||||||
|
type ResolvedInstructionAccount,
|
||||||
|
} from "@solana/program-client-core";
|
||||||
|
import { findResolverEntryPda } from "../pdas";
|
||||||
|
import { DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS } from "../programs";
|
||||||
|
|
||||||
|
export const UPDATE_RESOLVER_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array(
|
||||||
|
[108, 227, 28, 163, 123, 230, 190, 84],
|
||||||
|
);
|
||||||
|
|
||||||
|
export function getUpdateResolverDiscriminatorBytes(): ReadonlyUint8Array {
|
||||||
|
return fixEncoderSize(getBytesEncoder(), 8).encode(
|
||||||
|
UPDATE_RESOLVER_DISCRIMINATOR,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type UpdateResolverInstruction<
|
||||||
|
TProgram extends string = typeof DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS,
|
||||||
|
TAccountAuthority extends string | AccountMeta<string> = string,
|
||||||
|
TAccountResolverEntry extends string | AccountMeta<string> = string,
|
||||||
|
TRemainingAccounts extends readonly AccountMeta<string>[] = [],
|
||||||
|
> = Instruction<TProgram> &
|
||||||
|
InstructionWithData<ReadonlyUint8Array> &
|
||||||
|
InstructionWithAccounts<
|
||||||
|
[
|
||||||
|
TAccountAuthority extends string
|
||||||
|
? ReadonlySignerAccount<TAccountAuthority> &
|
||||||
|
AccountSignerMeta<TAccountAuthority>
|
||||||
|
: TAccountAuthority,
|
||||||
|
TAccountResolverEntry extends string
|
||||||
|
? WritableAccount<TAccountResolverEntry>
|
||||||
|
: TAccountResolverEntry,
|
||||||
|
...TRemainingAccounts,
|
||||||
|
]
|
||||||
|
>;
|
||||||
|
|
||||||
|
export type UpdateResolverInstructionData = {
|
||||||
|
discriminator: ReadonlyUint8Array;
|
||||||
|
name: string;
|
||||||
|
description: string;
|
||||||
|
feeBps: number;
|
||||||
|
metadataUri: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type UpdateResolverInstructionDataArgs = {
|
||||||
|
name: string;
|
||||||
|
description: string;
|
||||||
|
feeBps: number;
|
||||||
|
metadataUri: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function getUpdateResolverInstructionDataEncoder(): Encoder<UpdateResolverInstructionDataArgs> {
|
||||||
|
return transformEncoder(
|
||||||
|
getStructEncoder([
|
||||||
|
["discriminator", fixEncoderSize(getBytesEncoder(), 8)],
|
||||||
|
["name", addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],
|
||||||
|
["description", addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],
|
||||||
|
["feeBps", getU16Encoder()],
|
||||||
|
["metadataUri", addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],
|
||||||
|
]),
|
||||||
|
(value) => ({ ...value, discriminator: UPDATE_RESOLVER_DISCRIMINATOR }),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getUpdateResolverInstructionDataDecoder(): Decoder<UpdateResolverInstructionData> {
|
||||||
|
return getStructDecoder([
|
||||||
|
["discriminator", fixDecoderSize(getBytesDecoder(), 8)],
|
||||||
|
["name", addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],
|
||||||
|
["description", addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],
|
||||||
|
["feeBps", getU16Decoder()],
|
||||||
|
["metadataUri", addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getUpdateResolverInstructionDataCodec(): Codec<
|
||||||
|
UpdateResolverInstructionDataArgs,
|
||||||
|
UpdateResolverInstructionData
|
||||||
|
> {
|
||||||
|
return combineCodec(
|
||||||
|
getUpdateResolverInstructionDataEncoder(),
|
||||||
|
getUpdateResolverInstructionDataDecoder(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type UpdateResolverAsyncInput<
|
||||||
|
TAccountAuthority extends string = string,
|
||||||
|
TAccountResolverEntry extends string = string,
|
||||||
|
> = {
|
||||||
|
authority: TransactionSigner<TAccountAuthority>;
|
||||||
|
resolverEntry?: Address<TAccountResolverEntry>;
|
||||||
|
name: UpdateResolverInstructionDataArgs["name"];
|
||||||
|
description: UpdateResolverInstructionDataArgs["description"];
|
||||||
|
feeBps: UpdateResolverInstructionDataArgs["feeBps"];
|
||||||
|
metadataUri: UpdateResolverInstructionDataArgs["metadataUri"];
|
||||||
|
};
|
||||||
|
|
||||||
|
export async function getUpdateResolverInstructionAsync<
|
||||||
|
TAccountAuthority extends string,
|
||||||
|
TAccountResolverEntry extends string,
|
||||||
|
TProgramAddress extends Address = typeof DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS,
|
||||||
|
>(
|
||||||
|
input: UpdateResolverAsyncInput<TAccountAuthority, TAccountResolverEntry>,
|
||||||
|
config?: { programAddress?: TProgramAddress },
|
||||||
|
): Promise<
|
||||||
|
UpdateResolverInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountAuthority,
|
||||||
|
TAccountResolverEntry
|
||||||
|
>
|
||||||
|
> {
|
||||||
|
// Program address.
|
||||||
|
const programAddress =
|
||||||
|
config?.programAddress ?? DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS;
|
||||||
|
|
||||||
|
// Original accounts.
|
||||||
|
const originalAccounts = {
|
||||||
|
authority: { value: input.authority ?? null, isWritable: false },
|
||||||
|
resolverEntry: { value: input.resolverEntry ?? null, isWritable: true },
|
||||||
|
};
|
||||||
|
const accounts = originalAccounts as Record<
|
||||||
|
keyof typeof originalAccounts,
|
||||||
|
ResolvedInstructionAccount
|
||||||
|
>;
|
||||||
|
|
||||||
|
// Original args.
|
||||||
|
const args = { ...input };
|
||||||
|
|
||||||
|
// Resolve default values.
|
||||||
|
if (!accounts.resolverEntry.value) {
|
||||||
|
accounts.resolverEntry.value = await findResolverEntryPda({
|
||||||
|
authority: getAddressFromResolvedInstructionAccount(
|
||||||
|
"authority",
|
||||||
|
accounts.authority.value,
|
||||||
|
),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const getAccountMeta = getAccountMetaFactory(programAddress, "programId");
|
||||||
|
return Object.freeze({
|
||||||
|
accounts: [
|
||||||
|
getAccountMeta("authority", accounts.authority),
|
||||||
|
getAccountMeta("resolverEntry", accounts.resolverEntry),
|
||||||
|
],
|
||||||
|
data: getUpdateResolverInstructionDataEncoder().encode(
|
||||||
|
args as UpdateResolverInstructionDataArgs,
|
||||||
|
),
|
||||||
|
programAddress,
|
||||||
|
} as UpdateResolverInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountAuthority,
|
||||||
|
TAccountResolverEntry
|
||||||
|
>);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type UpdateResolverInput<
|
||||||
|
TAccountAuthority extends string = string,
|
||||||
|
TAccountResolverEntry extends string = string,
|
||||||
|
> = {
|
||||||
|
authority: TransactionSigner<TAccountAuthority>;
|
||||||
|
resolverEntry: Address<TAccountResolverEntry>;
|
||||||
|
name: UpdateResolverInstructionDataArgs["name"];
|
||||||
|
description: UpdateResolverInstructionDataArgs["description"];
|
||||||
|
feeBps: UpdateResolverInstructionDataArgs["feeBps"];
|
||||||
|
metadataUri: UpdateResolverInstructionDataArgs["metadataUri"];
|
||||||
|
};
|
||||||
|
|
||||||
|
export function getUpdateResolverInstruction<
|
||||||
|
TAccountAuthority extends string,
|
||||||
|
TAccountResolverEntry extends string,
|
||||||
|
TProgramAddress extends Address = typeof DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS,
|
||||||
|
>(
|
||||||
|
input: UpdateResolverInput<TAccountAuthority, TAccountResolverEntry>,
|
||||||
|
config?: { programAddress?: TProgramAddress },
|
||||||
|
): UpdateResolverInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountAuthority,
|
||||||
|
TAccountResolverEntry
|
||||||
|
> {
|
||||||
|
// Program address.
|
||||||
|
const programAddress =
|
||||||
|
config?.programAddress ?? DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS;
|
||||||
|
|
||||||
|
// Original accounts.
|
||||||
|
const originalAccounts = {
|
||||||
|
authority: { value: input.authority ?? null, isWritable: false },
|
||||||
|
resolverEntry: { value: input.resolverEntry ?? null, isWritable: true },
|
||||||
|
};
|
||||||
|
const accounts = originalAccounts as Record<
|
||||||
|
keyof typeof originalAccounts,
|
||||||
|
ResolvedInstructionAccount
|
||||||
|
>;
|
||||||
|
|
||||||
|
// Original args.
|
||||||
|
const args = { ...input };
|
||||||
|
|
||||||
|
const getAccountMeta = getAccountMetaFactory(programAddress, "programId");
|
||||||
|
return Object.freeze({
|
||||||
|
accounts: [
|
||||||
|
getAccountMeta("authority", accounts.authority),
|
||||||
|
getAccountMeta("resolverEntry", accounts.resolverEntry),
|
||||||
|
],
|
||||||
|
data: getUpdateResolverInstructionDataEncoder().encode(
|
||||||
|
args as UpdateResolverInstructionDataArgs,
|
||||||
|
),
|
||||||
|
programAddress,
|
||||||
|
} as UpdateResolverInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountAuthority,
|
||||||
|
TAccountResolverEntry
|
||||||
|
>);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ParsedUpdateResolverInstruction<
|
||||||
|
TProgram extends string = typeof DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS,
|
||||||
|
TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],
|
||||||
|
> = {
|
||||||
|
programAddress: Address<TProgram>;
|
||||||
|
accounts: {
|
||||||
|
authority: TAccountMetas[0];
|
||||||
|
resolverEntry: TAccountMetas[1];
|
||||||
|
};
|
||||||
|
data: UpdateResolverInstructionData;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function parseUpdateResolverInstruction<
|
||||||
|
TProgram extends string,
|
||||||
|
TAccountMetas extends readonly AccountMeta[],
|
||||||
|
>(
|
||||||
|
instruction: Instruction<TProgram> &
|
||||||
|
InstructionWithAccounts<TAccountMetas> &
|
||||||
|
InstructionWithData<ReadonlyUint8Array>,
|
||||||
|
): ParsedUpdateResolverInstruction<TProgram, TAccountMetas> {
|
||||||
|
if (instruction.accounts.length < 2) {
|
||||||
|
throw new SolanaError(
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,
|
||||||
|
{
|
||||||
|
actualAccountMetas: instruction.accounts.length,
|
||||||
|
expectedAccountMetas: 2,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
let accountIndex = 0;
|
||||||
|
const getNextAccount = () => {
|
||||||
|
const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;
|
||||||
|
accountIndex += 1;
|
||||||
|
return accountMeta;
|
||||||
|
};
|
||||||
|
return {
|
||||||
|
programAddress: instruction.programAddress,
|
||||||
|
accounts: { authority: getNextAccount(), resolverEntry: getNextAccount() },
|
||||||
|
data: getUpdateResolverInstructionDataDecoder().decode(instruction.data),
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,291 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
combineCodec,
|
||||||
|
fixDecoderSize,
|
||||||
|
fixEncoderSize,
|
||||||
|
getBytesDecoder,
|
||||||
|
getBytesEncoder,
|
||||||
|
getProgramDerivedAddress,
|
||||||
|
getStructDecoder,
|
||||||
|
getStructEncoder,
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,
|
||||||
|
SolanaError,
|
||||||
|
transformEncoder,
|
||||||
|
type AccountMeta,
|
||||||
|
type AccountSignerMeta,
|
||||||
|
type Address,
|
||||||
|
type FixedSizeCodec,
|
||||||
|
type FixedSizeDecoder,
|
||||||
|
type FixedSizeEncoder,
|
||||||
|
type Instruction,
|
||||||
|
type InstructionWithAccounts,
|
||||||
|
type InstructionWithData,
|
||||||
|
type ReadonlySignerAccount,
|
||||||
|
type ReadonlyUint8Array,
|
||||||
|
type TransactionSigner,
|
||||||
|
type WritableAccount,
|
||||||
|
} from "@solana/kit";
|
||||||
|
import {
|
||||||
|
getAccountMetaFactory,
|
||||||
|
type ResolvedInstructionAccount,
|
||||||
|
} from "@solana/program-client-core";
|
||||||
|
import { DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS } from "../programs";
|
||||||
|
import {
|
||||||
|
getRulingDecoder,
|
||||||
|
getRulingEncoder,
|
||||||
|
type Ruling,
|
||||||
|
type RulingArgs,
|
||||||
|
} from "../types";
|
||||||
|
|
||||||
|
export const UPDATE_STATS_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([
|
||||||
|
145, 138, 9, 150, 178, 31, 158, 244,
|
||||||
|
]);
|
||||||
|
|
||||||
|
export function getUpdateStatsDiscriminatorBytes(): ReadonlyUint8Array {
|
||||||
|
return fixEncoderSize(getBytesEncoder(), 8).encode(
|
||||||
|
UPDATE_STATS_DISCRIMINATOR,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type UpdateStatsInstruction<
|
||||||
|
TProgram extends string = typeof DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS,
|
||||||
|
TAccountEscrowAuthority extends string | AccountMeta<string> = string,
|
||||||
|
TAccountResolverEntry extends string | AccountMeta<string> = string,
|
||||||
|
TRemainingAccounts extends readonly AccountMeta<string>[] = [],
|
||||||
|
> = Instruction<TProgram> &
|
||||||
|
InstructionWithData<ReadonlyUint8Array> &
|
||||||
|
InstructionWithAccounts<
|
||||||
|
[
|
||||||
|
TAccountEscrowAuthority extends string
|
||||||
|
? ReadonlySignerAccount<TAccountEscrowAuthority> &
|
||||||
|
AccountSignerMeta<TAccountEscrowAuthority>
|
||||||
|
: TAccountEscrowAuthority,
|
||||||
|
TAccountResolverEntry extends string
|
||||||
|
? WritableAccount<TAccountResolverEntry>
|
||||||
|
: TAccountResolverEntry,
|
||||||
|
...TRemainingAccounts,
|
||||||
|
]
|
||||||
|
>;
|
||||||
|
|
||||||
|
export type UpdateStatsInstructionData = {
|
||||||
|
discriminator: ReadonlyUint8Array;
|
||||||
|
ruling: Ruling;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type UpdateStatsInstructionDataArgs = { ruling: RulingArgs };
|
||||||
|
|
||||||
|
export function getUpdateStatsInstructionDataEncoder(): FixedSizeEncoder<UpdateStatsInstructionDataArgs> {
|
||||||
|
return transformEncoder(
|
||||||
|
getStructEncoder([
|
||||||
|
["discriminator", fixEncoderSize(getBytesEncoder(), 8)],
|
||||||
|
["ruling", getRulingEncoder()],
|
||||||
|
]),
|
||||||
|
(value) => ({ ...value, discriminator: UPDATE_STATS_DISCRIMINATOR }),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getUpdateStatsInstructionDataDecoder(): FixedSizeDecoder<UpdateStatsInstructionData> {
|
||||||
|
return getStructDecoder([
|
||||||
|
["discriminator", fixDecoderSize(getBytesDecoder(), 8)],
|
||||||
|
["ruling", getRulingDecoder()],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getUpdateStatsInstructionDataCodec(): FixedSizeCodec<
|
||||||
|
UpdateStatsInstructionDataArgs,
|
||||||
|
UpdateStatsInstructionData
|
||||||
|
> {
|
||||||
|
return combineCodec(
|
||||||
|
getUpdateStatsInstructionDataEncoder(),
|
||||||
|
getUpdateStatsInstructionDataDecoder(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type UpdateStatsAsyncInput<
|
||||||
|
TAccountEscrowAuthority extends string = string,
|
||||||
|
TAccountResolverEntry extends string = string,
|
||||||
|
> = {
|
||||||
|
/** Must be the Escrow Program's authority PDA — only it can sign this. */
|
||||||
|
escrowAuthority?: TransactionSigner<TAccountEscrowAuthority>;
|
||||||
|
resolverEntry: Address<TAccountResolverEntry>;
|
||||||
|
ruling: UpdateStatsInstructionDataArgs["ruling"];
|
||||||
|
};
|
||||||
|
|
||||||
|
export async function getUpdateStatsInstructionAsync<
|
||||||
|
TAccountEscrowAuthority extends string,
|
||||||
|
TAccountResolverEntry extends string,
|
||||||
|
TProgramAddress extends Address = typeof DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS,
|
||||||
|
>(
|
||||||
|
input: UpdateStatsAsyncInput<TAccountEscrowAuthority, TAccountResolverEntry>,
|
||||||
|
config?: { programAddress?: TProgramAddress },
|
||||||
|
): Promise<
|
||||||
|
UpdateStatsInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountEscrowAuthority,
|
||||||
|
TAccountResolverEntry
|
||||||
|
>
|
||||||
|
> {
|
||||||
|
// Program address.
|
||||||
|
const programAddress =
|
||||||
|
config?.programAddress ?? DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS;
|
||||||
|
|
||||||
|
// Original accounts.
|
||||||
|
const originalAccounts = {
|
||||||
|
escrowAuthority: {
|
||||||
|
value: input.escrowAuthority ?? null,
|
||||||
|
isWritable: false,
|
||||||
|
},
|
||||||
|
resolverEntry: { value: input.resolverEntry ?? null, isWritable: true },
|
||||||
|
};
|
||||||
|
const accounts = originalAccounts as Record<
|
||||||
|
keyof typeof originalAccounts,
|
||||||
|
ResolvedInstructionAccount
|
||||||
|
>;
|
||||||
|
|
||||||
|
// Original args.
|
||||||
|
const args = { ...input };
|
||||||
|
|
||||||
|
// Resolve default values.
|
||||||
|
if (!accounts.escrowAuthority.value) {
|
||||||
|
accounts.escrowAuthority.value = await getProgramDerivedAddress({
|
||||||
|
programAddress:
|
||||||
|
"DjVR4EuYV6USMJFfsGZwhZ3y8rtWsmG8EvDY96GTqqi3" as Address<"DjVR4EuYV6USMJFfsGZwhZ3y8rtWsmG8EvDY96GTqqi3">,
|
||||||
|
seeds: [
|
||||||
|
getBytesEncoder().encode(
|
||||||
|
new Uint8Array([
|
||||||
|
101, 115, 99, 114, 111, 119, 95, 97, 117, 116, 104, 111, 114, 105,
|
||||||
|
116, 121,
|
||||||
|
]),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const getAccountMeta = getAccountMetaFactory(programAddress, "programId");
|
||||||
|
return Object.freeze({
|
||||||
|
accounts: [
|
||||||
|
getAccountMeta("escrowAuthority", accounts.escrowAuthority),
|
||||||
|
getAccountMeta("resolverEntry", accounts.resolverEntry),
|
||||||
|
],
|
||||||
|
data: getUpdateStatsInstructionDataEncoder().encode(
|
||||||
|
args as UpdateStatsInstructionDataArgs,
|
||||||
|
),
|
||||||
|
programAddress,
|
||||||
|
} as UpdateStatsInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountEscrowAuthority,
|
||||||
|
TAccountResolverEntry
|
||||||
|
>);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type UpdateStatsInput<
|
||||||
|
TAccountEscrowAuthority extends string = string,
|
||||||
|
TAccountResolverEntry extends string = string,
|
||||||
|
> = {
|
||||||
|
/** Must be the Escrow Program's authority PDA — only it can sign this. */
|
||||||
|
escrowAuthority: TransactionSigner<TAccountEscrowAuthority>;
|
||||||
|
resolverEntry: Address<TAccountResolverEntry>;
|
||||||
|
ruling: UpdateStatsInstructionDataArgs["ruling"];
|
||||||
|
};
|
||||||
|
|
||||||
|
export function getUpdateStatsInstruction<
|
||||||
|
TAccountEscrowAuthority extends string,
|
||||||
|
TAccountResolverEntry extends string,
|
||||||
|
TProgramAddress extends Address = typeof DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS,
|
||||||
|
>(
|
||||||
|
input: UpdateStatsInput<TAccountEscrowAuthority, TAccountResolverEntry>,
|
||||||
|
config?: { programAddress?: TProgramAddress },
|
||||||
|
): UpdateStatsInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountEscrowAuthority,
|
||||||
|
TAccountResolverEntry
|
||||||
|
> {
|
||||||
|
// Program address.
|
||||||
|
const programAddress =
|
||||||
|
config?.programAddress ?? DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS;
|
||||||
|
|
||||||
|
// Original accounts.
|
||||||
|
const originalAccounts = {
|
||||||
|
escrowAuthority: {
|
||||||
|
value: input.escrowAuthority ?? null,
|
||||||
|
isWritable: false,
|
||||||
|
},
|
||||||
|
resolverEntry: { value: input.resolverEntry ?? null, isWritable: true },
|
||||||
|
};
|
||||||
|
const accounts = originalAccounts as Record<
|
||||||
|
keyof typeof originalAccounts,
|
||||||
|
ResolvedInstructionAccount
|
||||||
|
>;
|
||||||
|
|
||||||
|
// Original args.
|
||||||
|
const args = { ...input };
|
||||||
|
|
||||||
|
const getAccountMeta = getAccountMetaFactory(programAddress, "programId");
|
||||||
|
return Object.freeze({
|
||||||
|
accounts: [
|
||||||
|
getAccountMeta("escrowAuthority", accounts.escrowAuthority),
|
||||||
|
getAccountMeta("resolverEntry", accounts.resolverEntry),
|
||||||
|
],
|
||||||
|
data: getUpdateStatsInstructionDataEncoder().encode(
|
||||||
|
args as UpdateStatsInstructionDataArgs,
|
||||||
|
),
|
||||||
|
programAddress,
|
||||||
|
} as UpdateStatsInstruction<
|
||||||
|
TProgramAddress,
|
||||||
|
TAccountEscrowAuthority,
|
||||||
|
TAccountResolverEntry
|
||||||
|
>);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ParsedUpdateStatsInstruction<
|
||||||
|
TProgram extends string = typeof DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS,
|
||||||
|
TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],
|
||||||
|
> = {
|
||||||
|
programAddress: Address<TProgram>;
|
||||||
|
accounts: {
|
||||||
|
/** Must be the Escrow Program's authority PDA — only it can sign this. */
|
||||||
|
escrowAuthority: TAccountMetas[0];
|
||||||
|
resolverEntry: TAccountMetas[1];
|
||||||
|
};
|
||||||
|
data: UpdateStatsInstructionData;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function parseUpdateStatsInstruction<
|
||||||
|
TProgram extends string,
|
||||||
|
TAccountMetas extends readonly AccountMeta[],
|
||||||
|
>(
|
||||||
|
instruction: Instruction<TProgram> &
|
||||||
|
InstructionWithAccounts<TAccountMetas> &
|
||||||
|
InstructionWithData<ReadonlyUint8Array>,
|
||||||
|
): ParsedUpdateStatsInstruction<TProgram, TAccountMetas> {
|
||||||
|
if (instruction.accounts.length < 2) {
|
||||||
|
throw new SolanaError(
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,
|
||||||
|
{
|
||||||
|
actualAccountMetas: instruction.accounts.length,
|
||||||
|
expectedAccountMetas: 2,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
let accountIndex = 0;
|
||||||
|
const getNextAccount = () => {
|
||||||
|
const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;
|
||||||
|
accountIndex += 1;
|
||||||
|
return accountMeta;
|
||||||
|
};
|
||||||
|
return {
|
||||||
|
programAddress: instruction.programAddress,
|
||||||
|
accounts: {
|
||||||
|
escrowAuthority: getNextAccount(),
|
||||||
|
resolverEntry: getNextAccount(),
|
||||||
|
},
|
||||||
|
data: getUpdateStatsInstructionDataDecoder().decode(instruction.data),
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
export * from "./resolverEntry";
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
getAddressEncoder,
|
||||||
|
getBytesEncoder,
|
||||||
|
getProgramDerivedAddress,
|
||||||
|
type Address,
|
||||||
|
type ProgramDerivedAddress,
|
||||||
|
} from "@solana/kit";
|
||||||
|
|
||||||
|
export type ResolverEntrySeeds = {
|
||||||
|
authority: Address;
|
||||||
|
};
|
||||||
|
|
||||||
|
export async function findResolverEntryPda(
|
||||||
|
seeds: ResolverEntrySeeds,
|
||||||
|
config: { programAddress?: Address | undefined } = {},
|
||||||
|
): Promise<ProgramDerivedAddress> {
|
||||||
|
const {
|
||||||
|
programAddress = "GwUPAKs3HHzCpj8uhet4NAnxk9GWNwfrYbpihu5DyFp" as Address<"GwUPAKs3HHzCpj8uhet4NAnxk9GWNwfrYbpihu5DyFp">,
|
||||||
|
} = config;
|
||||||
|
return await getProgramDerivedAddress({
|
||||||
|
programAddress,
|
||||||
|
seeds: [
|
||||||
|
getBytesEncoder().encode(
|
||||||
|
new Uint8Array([114, 101, 115, 111, 108, 118, 101, 114]),
|
||||||
|
),
|
||||||
|
getAddressEncoder().encode(seeds.authority),
|
||||||
|
],
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -0,0 +1,251 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
assertIsInstructionWithAccounts,
|
||||||
|
containsBytes,
|
||||||
|
extendClient,
|
||||||
|
fixEncoderSize,
|
||||||
|
getBytesEncoder,
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT,
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION,
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE,
|
||||||
|
SolanaError,
|
||||||
|
type Address,
|
||||||
|
type ClientWithRpc,
|
||||||
|
type ClientWithTransactionPlanning,
|
||||||
|
type ClientWithTransactionSending,
|
||||||
|
type GetAccountInfoApi,
|
||||||
|
type GetMultipleAccountsApi,
|
||||||
|
type Instruction,
|
||||||
|
type InstructionWithData,
|
||||||
|
type ReadonlyUint8Array,
|
||||||
|
} from "@solana/kit";
|
||||||
|
import {
|
||||||
|
addSelfFetchFunctions,
|
||||||
|
addSelfPlanAndSendFunctions,
|
||||||
|
type SelfFetchFunctions,
|
||||||
|
type SelfPlanAndSendFunctions,
|
||||||
|
} from "@solana/program-client-core";
|
||||||
|
import {
|
||||||
|
getResolverEntryCodec,
|
||||||
|
type ResolverEntry,
|
||||||
|
type ResolverEntryArgs,
|
||||||
|
} from "../accounts";
|
||||||
|
import {
|
||||||
|
getRegisterResolverInstructionAsync,
|
||||||
|
getUpdateResolverInstructionAsync,
|
||||||
|
getUpdateStatsInstructionAsync,
|
||||||
|
parseRegisterResolverInstruction,
|
||||||
|
parseUpdateResolverInstruction,
|
||||||
|
parseUpdateStatsInstruction,
|
||||||
|
type ParsedRegisterResolverInstruction,
|
||||||
|
type ParsedUpdateResolverInstruction,
|
||||||
|
type ParsedUpdateStatsInstruction,
|
||||||
|
type RegisterResolverAsyncInput,
|
||||||
|
type UpdateResolverAsyncInput,
|
||||||
|
type UpdateStatsAsyncInput,
|
||||||
|
} from "../instructions";
|
||||||
|
import { findResolverEntryPda } from "../pdas";
|
||||||
|
|
||||||
|
export const DESCRO_EXT_RESOLVERS_PROGRAM_ADDRESS =
|
||||||
|
"GwUPAKs3HHzCpj8uhet4NAnxk9GWNwfrYbpihu5DyFp" as Address<"GwUPAKs3HHzCpj8uhet4NAnxk9GWNwfrYbpihu5DyFp">;
|
||||||
|
|
||||||
|
export enum DescroExtResolversAccount {
|
||||||
|
ResolverEntry,
|
||||||
|
}
|
||||||
|
|
||||||
|
export function identifyDescroExtResolversAccount(
|
||||||
|
account: { data: ReadonlyUint8Array } | ReadonlyUint8Array,
|
||||||
|
): DescroExtResolversAccount {
|
||||||
|
const data = "data" in account ? account.data : account;
|
||||||
|
if (
|
||||||
|
containsBytes(
|
||||||
|
data,
|
||||||
|
fixEncoderSize(getBytesEncoder(), 8).encode(
|
||||||
|
new Uint8Array([0, 60, 55, 58, 157, 135, 51, 191]),
|
||||||
|
),
|
||||||
|
0,
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
return DescroExtResolversAccount.ResolverEntry;
|
||||||
|
}
|
||||||
|
throw new SolanaError(
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT,
|
||||||
|
{ accountData: data, programName: "descroExtResolvers" },
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum DescroExtResolversInstruction {
|
||||||
|
RegisterResolver,
|
||||||
|
UpdateResolver,
|
||||||
|
UpdateStats,
|
||||||
|
}
|
||||||
|
|
||||||
|
export function identifyDescroExtResolversInstruction(
|
||||||
|
instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array,
|
||||||
|
): DescroExtResolversInstruction {
|
||||||
|
const data = "data" in instruction ? instruction.data : instruction;
|
||||||
|
if (
|
||||||
|
containsBytes(
|
||||||
|
data,
|
||||||
|
fixEncoderSize(getBytesEncoder(), 8).encode(
|
||||||
|
new Uint8Array([76, 101, 253, 229, 153, 242, 212, 230]),
|
||||||
|
),
|
||||||
|
0,
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
return DescroExtResolversInstruction.RegisterResolver;
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
containsBytes(
|
||||||
|
data,
|
||||||
|
fixEncoderSize(getBytesEncoder(), 8).encode(
|
||||||
|
new Uint8Array([108, 227, 28, 163, 123, 230, 190, 84]),
|
||||||
|
),
|
||||||
|
0,
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
return DescroExtResolversInstruction.UpdateResolver;
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
containsBytes(
|
||||||
|
data,
|
||||||
|
fixEncoderSize(getBytesEncoder(), 8).encode(
|
||||||
|
new Uint8Array([145, 138, 9, 150, 178, 31, 158, 244]),
|
||||||
|
),
|
||||||
|
0,
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
return DescroExtResolversInstruction.UpdateStats;
|
||||||
|
}
|
||||||
|
throw new SolanaError(
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION,
|
||||||
|
{ instructionData: data, programName: "descroExtResolvers" },
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ParsedDescroExtResolversInstruction<
|
||||||
|
TProgram extends string = "GwUPAKs3HHzCpj8uhet4NAnxk9GWNwfrYbpihu5DyFp",
|
||||||
|
> =
|
||||||
|
| ({
|
||||||
|
instructionType: DescroExtResolversInstruction.RegisterResolver;
|
||||||
|
} & ParsedRegisterResolverInstruction<TProgram>)
|
||||||
|
| ({
|
||||||
|
instructionType: DescroExtResolversInstruction.UpdateResolver;
|
||||||
|
} & ParsedUpdateResolverInstruction<TProgram>)
|
||||||
|
| ({
|
||||||
|
instructionType: DescroExtResolversInstruction.UpdateStats;
|
||||||
|
} & ParsedUpdateStatsInstruction<TProgram>);
|
||||||
|
|
||||||
|
export function parseDescroExtResolversInstruction<TProgram extends string>(
|
||||||
|
instruction: Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array>,
|
||||||
|
): ParsedDescroExtResolversInstruction<TProgram> {
|
||||||
|
const instructionType = identifyDescroExtResolversInstruction(instruction);
|
||||||
|
switch (instructionType) {
|
||||||
|
case DescroExtResolversInstruction.RegisterResolver: {
|
||||||
|
assertIsInstructionWithAccounts(instruction);
|
||||||
|
return {
|
||||||
|
instructionType: DescroExtResolversInstruction.RegisterResolver,
|
||||||
|
...parseRegisterResolverInstruction(instruction),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
case DescroExtResolversInstruction.UpdateResolver: {
|
||||||
|
assertIsInstructionWithAccounts(instruction);
|
||||||
|
return {
|
||||||
|
instructionType: DescroExtResolversInstruction.UpdateResolver,
|
||||||
|
...parseUpdateResolverInstruction(instruction),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
case DescroExtResolversInstruction.UpdateStats: {
|
||||||
|
assertIsInstructionWithAccounts(instruction);
|
||||||
|
return {
|
||||||
|
instructionType: DescroExtResolversInstruction.UpdateStats,
|
||||||
|
...parseUpdateStatsInstruction(instruction),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
throw new SolanaError(
|
||||||
|
SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE,
|
||||||
|
{
|
||||||
|
instructionType: instructionType as string,
|
||||||
|
programName: "descroExtResolvers",
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export type DescroExtResolversPlugin = {
|
||||||
|
accounts: DescroExtResolversPluginAccounts;
|
||||||
|
instructions: DescroExtResolversPluginInstructions;
|
||||||
|
pdas: DescroExtResolversPluginPdas;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type DescroExtResolversPluginAccounts = {
|
||||||
|
resolverEntry: ReturnType<typeof getResolverEntryCodec> &
|
||||||
|
SelfFetchFunctions<ResolverEntryArgs, ResolverEntry>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type DescroExtResolversPluginInstructions = {
|
||||||
|
registerResolver: (
|
||||||
|
input: RegisterResolverAsyncInput,
|
||||||
|
) => ReturnType<typeof getRegisterResolverInstructionAsync> &
|
||||||
|
SelfPlanAndSendFunctions;
|
||||||
|
updateResolver: (
|
||||||
|
input: UpdateResolverAsyncInput,
|
||||||
|
) => ReturnType<typeof getUpdateResolverInstructionAsync> &
|
||||||
|
SelfPlanAndSendFunctions;
|
||||||
|
updateStats: (
|
||||||
|
input: UpdateStatsAsyncInput,
|
||||||
|
) => ReturnType<typeof getUpdateStatsInstructionAsync> &
|
||||||
|
SelfPlanAndSendFunctions;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type DescroExtResolversPluginPdas = {
|
||||||
|
resolverEntry: typeof findResolverEntryPda;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type DescroExtResolversPluginRequirements = ClientWithRpc<
|
||||||
|
GetAccountInfoApi & GetMultipleAccountsApi
|
||||||
|
> &
|
||||||
|
ClientWithTransactionPlanning &
|
||||||
|
ClientWithTransactionSending;
|
||||||
|
|
||||||
|
export function descroExtResolversProgram() {
|
||||||
|
return <T extends DescroExtResolversPluginRequirements>(
|
||||||
|
client: T,
|
||||||
|
): Omit<T, "descroExtResolvers"> & {
|
||||||
|
descroExtResolvers: DescroExtResolversPlugin;
|
||||||
|
} => {
|
||||||
|
return extendClient(client, {
|
||||||
|
descroExtResolvers: <DescroExtResolversPlugin>{
|
||||||
|
accounts: {
|
||||||
|
resolverEntry: addSelfFetchFunctions(client, getResolverEntryCodec()),
|
||||||
|
},
|
||||||
|
instructions: {
|
||||||
|
registerResolver: (input) =>
|
||||||
|
addSelfPlanAndSendFunctions(
|
||||||
|
client,
|
||||||
|
getRegisterResolverInstructionAsync(input),
|
||||||
|
),
|
||||||
|
updateResolver: (input) =>
|
||||||
|
addSelfPlanAndSendFunctions(
|
||||||
|
client,
|
||||||
|
getUpdateResolverInstructionAsync(input),
|
||||||
|
),
|
||||||
|
updateStats: (input) =>
|
||||||
|
addSelfPlanAndSendFunctions(
|
||||||
|
client,
|
||||||
|
getUpdateStatsInstructionAsync(input),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
pdas: { resolverEntry: findResolverEntryPda },
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
export * from "./descroExtResolvers";
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
export * from "./resolverType";
|
||||||
|
export * from "./ruling";
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
combineCodec,
|
||||||
|
getEnumDecoder,
|
||||||
|
getEnumEncoder,
|
||||||
|
type FixedSizeCodec,
|
||||||
|
type FixedSizeDecoder,
|
||||||
|
type FixedSizeEncoder,
|
||||||
|
} from "@solana/kit";
|
||||||
|
|
||||||
|
export enum ResolverType {
|
||||||
|
CentralAuthority,
|
||||||
|
JuryDAO,
|
||||||
|
MAD,
|
||||||
|
Algorithmic,
|
||||||
|
Multisig,
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ResolverTypeArgs = ResolverType;
|
||||||
|
|
||||||
|
export function getResolverTypeEncoder(): FixedSizeEncoder<ResolverTypeArgs> {
|
||||||
|
return getEnumEncoder(ResolverType);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getResolverTypeDecoder(): FixedSizeDecoder<ResolverType> {
|
||||||
|
return getEnumDecoder(ResolverType);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getResolverTypeCodec(): FixedSizeCodec<
|
||||||
|
ResolverTypeArgs,
|
||||||
|
ResolverType
|
||||||
|
> {
|
||||||
|
return combineCodec(getResolverTypeEncoder(), getResolverTypeDecoder());
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
/**
|
||||||
|
* This code was AUTOGENERATED using the Codama library.
|
||||||
|
* Please DO NOT EDIT THIS FILE, instead use visitors
|
||||||
|
* to add features, then rerun Codama to update it.
|
||||||
|
*
|
||||||
|
* @see https://github.com/codama-idl/codama
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
combineCodec,
|
||||||
|
getEnumDecoder,
|
||||||
|
getEnumEncoder,
|
||||||
|
type FixedSizeCodec,
|
||||||
|
type FixedSizeDecoder,
|
||||||
|
type FixedSizeEncoder,
|
||||||
|
} from "@solana/kit";
|
||||||
|
|
||||||
|
/** Passed to update_stats; mirrors the Escrow program's Winner enum. */
|
||||||
|
export enum Ruling {
|
||||||
|
Buyer,
|
||||||
|
Seller,
|
||||||
|
}
|
||||||
|
|
||||||
|
export type RulingArgs = Ruling;
|
||||||
|
|
||||||
|
export function getRulingEncoder(): FixedSizeEncoder<RulingArgs> {
|
||||||
|
return getEnumEncoder(Ruling);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getRulingDecoder(): FixedSizeDecoder<Ruling> {
|
||||||
|
return getEnumDecoder(Ruling);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getRulingCodec(): FixedSizeCodec<RulingArgs, Ruling> {
|
||||||
|
return combineCodec(getRulingEncoder(), getRulingDecoder());
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user