{"version":3,"file":"createSplitV2Instruction.cjs","sources":["../../../src/instructions/createSplitV2Instruction.ts"],"sourcesContent":["import { AccountMeta, AccountRole, Address, Instruction } from \"@solana/kit\";\r\nimport { serialize } from \"borsh\";\r\n\r\n/**\r\n * Input for creating a split SNS V2 domain account.\r\n *\r\n * @example\r\n * ```ts\r\n * const params: CreateSplitV2InstructionParams = { name: \"example\", space: 1_000, referrerIdxOpt: null };\r\n * ```\r\n */\r\nexport interface CreateSplitV2InstructionParams {\r\n  /** TLD-less domain name. */\r\n  name: string;\r\n  /** Account data size in bytes. */\r\n  space: number;\r\n  /** Approved referrer index, if any. */\r\n  referrerIdxOpt: number | null;\r\n}\r\n\r\n/** Builder for creating a split SNS V2 domain account. */\r\nexport class CreateSplitV2Instruction {\r\n  /** Instruction discriminator. */\r\n  tag: number;\r\n  /** TLD-less domain name. */\r\n  name: string;\r\n  /** Account data size in bytes. */\r\n  space: number;\r\n  /** Approved referrer index, if any. */\r\n  referrerIdxOpt: number | null;\r\n\r\n  static schema = {\r\n    struct: {\r\n      tag: \"u8\",\r\n      name: \"string\",\r\n      space: \"u32\",\r\n      referrerIdxOpt: { option: \"u16\" },\r\n    },\r\n  };\r\n\r\n  constructor(obj: CreateSplitV2InstructionParams) {\r\n    this.tag = 20;\r\n    this.name = obj.name;\r\n    this.space = obj.space;\r\n    this.referrerIdxOpt = obj.referrerIdxOpt;\r\n  }\r\n\r\n  serialize(): Uint8Array {\r\n    return serialize(CreateSplitV2Instruction.schema, this);\r\n  }\r\n\r\n  getInstruction(\r\n    programAddress: Address,\r\n    namingServiceProgram: Address,\r\n    rootDomain: Address,\r\n    name: Address,\r\n    reverseLookup: Address,\r\n    systemProgram: Address,\r\n    centralState: Address,\r\n    buyer: Address,\r\n    domainOwner: Address,\r\n    feePayer: Address,\r\n    buyerTokenSource: Address,\r\n    pythFeedAccount: Address,\r\n    vault: Address,\r\n    splTokenProgram: Address,\r\n    rentSysvar: Address,\r\n    state: Address,\r\n    referrerAccountOpt?: Address\r\n  ): Instruction {\r\n    const data = this.serialize();\r\n    const accounts: AccountMeta[] = [\r\n      {\r\n        address: namingServiceProgram,\r\n        role: AccountRole.READONLY,\r\n      },\r\n      {\r\n        address: rootDomain,\r\n        role: AccountRole.READONLY,\r\n      },\r\n      {\r\n        address: name,\r\n        role: AccountRole.WRITABLE,\r\n      },\r\n      {\r\n        address: reverseLookup,\r\n        role: AccountRole.WRITABLE,\r\n      },\r\n      {\r\n        address: systemProgram,\r\n        role: AccountRole.READONLY,\r\n      },\r\n      {\r\n        address: centralState,\r\n        role: AccountRole.READONLY,\r\n      },\r\n      {\r\n        address: buyer,\r\n        role: AccountRole.WRITABLE_SIGNER,\r\n      },\r\n      {\r\n        address: domainOwner,\r\n        role: AccountRole.READONLY,\r\n      },\r\n      {\r\n        address: feePayer,\r\n        role: AccountRole.WRITABLE_SIGNER,\r\n      },\r\n      {\r\n        address: buyerTokenSource,\r\n        role: AccountRole.WRITABLE,\r\n      },\r\n      {\r\n        address: pythFeedAccount,\r\n        role: AccountRole.READONLY,\r\n      },\r\n      {\r\n        address: vault,\r\n        role: AccountRole.WRITABLE,\r\n      },\r\n      {\r\n        address: splTokenProgram,\r\n        role: AccountRole.READONLY,\r\n      },\r\n      {\r\n        address: rentSysvar,\r\n        role: AccountRole.READONLY,\r\n      },\r\n      {\r\n        address: state,\r\n        role: AccountRole.READONLY,\r\n      },\r\n    ];\r\n\r\n    if (referrerAccountOpt) {\r\n      accounts.push({\r\n        address: referrerAccountOpt,\r\n        role: AccountRole.WRITABLE,\r\n      });\r\n    }\r\n\r\n    return {\r\n      programAddress,\r\n      accounts,\r\n      data,\r\n    };\r\n  }\r\n}\r\n"],"names":["serialize","AccountRole"],"mappings":"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"}