multisig.ts 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. /**
  2. * This code was AUTOGENERATED using the codama library.
  3. * Please DO NOT EDIT THIS FILE, instead use visitors
  4. * to add features, then rerun codama to update it.
  5. *
  6. * @see https://github.com/codama-idl/codama
  7. */
  8. import {
  9. assertAccountExists,
  10. assertAccountsExist,
  11. combineCodec,
  12. decodeAccount,
  13. fetchEncodedAccount,
  14. fetchEncodedAccounts,
  15. getAddressDecoder,
  16. getAddressEncoder,
  17. getArrayDecoder,
  18. getArrayEncoder,
  19. getBooleanDecoder,
  20. getBooleanEncoder,
  21. getStructDecoder,
  22. getStructEncoder,
  23. getU8Decoder,
  24. getU8Encoder,
  25. type Account,
  26. type Address,
  27. type EncodedAccount,
  28. type FetchAccountConfig,
  29. type FetchAccountsConfig,
  30. type FixedSizeCodec,
  31. type FixedSizeDecoder,
  32. type FixedSizeEncoder,
  33. type MaybeAccount,
  34. type MaybeEncodedAccount,
  35. } from '@solana/kit';
  36. export type Multisig = {
  37. /** Number of signers required. */
  38. m: number;
  39. /** Number of valid signers. */
  40. n: number;
  41. /** Is `true` if this structure has been initialized. */
  42. isInitialized: boolean;
  43. /** Signer public keys. */
  44. signers: Array<Address>;
  45. };
  46. export type MultisigArgs = Multisig;
  47. export function getMultisigEncoder(): FixedSizeEncoder<MultisigArgs> {
  48. return getStructEncoder([
  49. ['m', getU8Encoder()],
  50. ['n', getU8Encoder()],
  51. ['isInitialized', getBooleanEncoder()],
  52. ['signers', getArrayEncoder(getAddressEncoder(), { size: 11 })],
  53. ]);
  54. }
  55. export function getMultisigDecoder(): FixedSizeDecoder<Multisig> {
  56. return getStructDecoder([
  57. ['m', getU8Decoder()],
  58. ['n', getU8Decoder()],
  59. ['isInitialized', getBooleanDecoder()],
  60. ['signers', getArrayDecoder(getAddressDecoder(), { size: 11 })],
  61. ]);
  62. }
  63. export function getMultisigCodec(): FixedSizeCodec<MultisigArgs, Multisig> {
  64. return combineCodec(getMultisigEncoder(), getMultisigDecoder());
  65. }
  66. export function decodeMultisig<TAddress extends string = string>(
  67. encodedAccount: EncodedAccount<TAddress>
  68. ): Account<Multisig, TAddress>;
  69. export function decodeMultisig<TAddress extends string = string>(
  70. encodedAccount: MaybeEncodedAccount<TAddress>
  71. ): MaybeAccount<Multisig, TAddress>;
  72. export function decodeMultisig<TAddress extends string = string>(
  73. encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>
  74. ): Account<Multisig, TAddress> | MaybeAccount<Multisig, TAddress> {
  75. return decodeAccount(
  76. encodedAccount as MaybeEncodedAccount<TAddress>,
  77. getMultisigDecoder()
  78. );
  79. }
  80. export async function fetchMultisig<TAddress extends string = string>(
  81. rpc: Parameters<typeof fetchEncodedAccount>[0],
  82. address: Address<TAddress>,
  83. config?: FetchAccountConfig
  84. ): Promise<Account<Multisig, TAddress>> {
  85. const maybeAccount = await fetchMaybeMultisig(rpc, address, config);
  86. assertAccountExists(maybeAccount);
  87. return maybeAccount;
  88. }
  89. export async function fetchMaybeMultisig<TAddress extends string = string>(
  90. rpc: Parameters<typeof fetchEncodedAccount>[0],
  91. address: Address<TAddress>,
  92. config?: FetchAccountConfig
  93. ): Promise<MaybeAccount<Multisig, TAddress>> {
  94. const maybeAccount = await fetchEncodedAccount(rpc, address, config);
  95. return decodeMultisig(maybeAccount);
  96. }
  97. export async function fetchAllMultisig(
  98. rpc: Parameters<typeof fetchEncodedAccounts>[0],
  99. addresses: Array<Address>,
  100. config?: FetchAccountsConfig
  101. ): Promise<Account<Multisig>[]> {
  102. const maybeAccounts = await fetchAllMaybeMultisig(rpc, addresses, config);
  103. assertAccountsExist(maybeAccounts);
  104. return maybeAccounts;
  105. }
  106. export async function fetchAllMaybeMultisig(
  107. rpc: Parameters<typeof fetchEncodedAccounts>[0],
  108. addresses: Array<Address>,
  109. config?: FetchAccountsConfig
  110. ): Promise<MaybeAccount<Multisig>[]> {
  111. const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);
  112. return maybeAccounts.map((maybeAccount) => decodeMultisig(maybeAccount));
  113. }
  114. export function getMultisigSize(): number {
  115. return 355;
  116. }