// generate: // fetch('https://github.com/smartcontractkit/chainlink-ccip/raw/refs/heads/main/chains/solana/contracts/target/types/burnmint_token_pool.ts') // .then((res) => res.text()) // .then((text) => text.trim()) export type BurnmintTokenPool = { version: '1.6.3' name: 'burnmint_token_pool' instructions: [ { name: 'initGlobalConfig' accounts: [ { name: 'config' isMut: true isSigner: false }, { name: 'authority' isMut: true isSigner: true }, { name: 'systemProgram' isMut: false isSigner: false }, { name: 'program' isMut: false isSigner: false }, { name: 'programData' isMut: false isSigner: false }, ] args: [ { name: 'routerAddress' type: 'publicKey' }, { name: 'rmnAddress' type: 'publicKey' }, ] }, { name: 'updateSelfServedAllowed' accounts: [ { name: 'config' isMut: true isSigner: false }, { name: 'authority' isMut: false isSigner: true }, { name: 'program' isMut: false isSigner: false }, { name: 'programData' isMut: false isSigner: false }, ] args: [ { name: 'selfServedAllowed' type: 'bool' }, ] }, { name: 'updateDefaultRouter' accounts: [ { name: 'config' isMut: true isSigner: false }, { name: 'authority' isMut: false isSigner: true }, { name: 'program' isMut: false isSigner: false }, { name: 'programData' isMut: false isSigner: false }, ] args: [ { name: 'routerAddress' type: 'publicKey' }, ] }, { name: 'updateDefaultRmn' accounts: [ { name: 'config' isMut: true isSigner: false }, { name: 'authority' isMut: false isSigner: true }, { name: 'program' isMut: false isSigner: false }, { name: 'programData' isMut: false isSigner: false }, ] args: [ { name: 'rmnAddress' type: 'publicKey' }, ] }, { name: 'initialize' accounts: [ { name: 'state' isMut: true isSigner: false }, { name: 'mint' isMut: false isSigner: false }, { name: 'authority' isMut: true isSigner: true }, { name: 'systemProgram' isMut: false isSigner: false }, { name: 'program' isMut: false isSigner: false }, { name: 'programData' isMut: false isSigner: false }, { name: 'config' isMut: false isSigner: false }, ] args: [] }, { name: 'transferMintAuthorityToMultisig' accounts: [ { name: 'state' isMut: true isSigner: false }, { name: 'mint' isMut: true isSigner: false }, { name: 'tokenProgram' isMut: false isSigner: false }, { name: 'poolSigner' isMut: false isSigner: false }, { name: 'authority' isMut: false isSigner: true }, { name: 'newMultisigMintAuthority' isMut: false isSigner: false }, { name: 'program' isMut: false isSigner: false }, { name: 'programData' isMut: false isSigner: false }, ] args: [] }, { name: 'transferMintAuthorityToPdaSigner' accounts: [ { name: 'state' isMut: false isSigner: false }, { name: 'mint' isMut: true isSigner: false }, { name: 'tokenProgram' isMut: false isSigner: false }, { name: 'poolSigner' isMut: false isSigner: false }, { name: 'authority' isMut: false isSigner: true }, { name: 'currentMintAuthorityAccount' isMut: false isSigner: false }, { name: 'program' isMut: false isSigner: false }, { name: 'programData' isMut: false isSigner: false }, ] args: [] }, { name: 'typeVersion' docs: [ 'Returns the program type (name) and version.', 'Used by offchain code to easily determine which program & version is being interacted with.', '', '# Arguments', '* `ctx` - The context', ] accounts: [ { name: 'clock' isMut: false isSigner: false }, ] args: [] returns: 'string' }, { name: 'transferOwnership' accounts: [ { name: 'state' isMut: true isSigner: false }, { name: 'mint' isMut: false isSigner: false }, { name: 'authority' isMut: false isSigner: true }, ] args: [ { name: 'proposedOwner' type: 'publicKey' }, ] }, { name: 'acceptOwnership' accounts: [ { name: 'state' isMut: true isSigner: false }, { name: 'mint' isMut: false isSigner: false }, { name: 'authority' isMut: false isSigner: true }, ] args: [] }, { name: 'setRouter' accounts: [ { name: 'state' isMut: true isSigner: false }, { name: 'mint' isMut: false isSigner: false }, { name: 'authority' isMut: true isSigner: true }, { name: 'program' isMut: false isSigner: false }, { name: 'programData' isMut: false isSigner: false }, ] args: [ { name: 'newRouter' type: 'publicKey' }, ] }, { name: 'setRmn' accounts: [ { name: 'state' isMut: true isSigner: false }, { name: 'mint' isMut: false isSigner: false }, { name: 'authority' isMut: true isSigner: true }, { name: 'program' isMut: false isSigner: false }, { name: 'programData' isMut: false isSigner: false }, ] args: [ { name: 'rmnAddress' type: 'publicKey' }, ] }, { name: 'initializeStateVersion' accounts: [ { name: 'state' isMut: true isSigner: false }, ] args: [ { name: 'mint' type: 'publicKey' }, ] }, { name: 'initChainRemoteConfig' accounts: [ { name: 'state' isMut: false isSigner: false }, { name: 'chainConfig' isMut: true isSigner: false }, { name: 'authority' isMut: true isSigner: true }, { name: 'systemProgram' isMut: false isSigner: false }, ] args: [ { name: 'remoteChainSelector' type: 'u64' }, { name: 'mint' type: 'publicKey' }, { name: 'cfg' type: { defined: 'RemoteConfig' } }, ] }, { name: 'editChainRemoteConfig' accounts: [ { name: 'state' isMut: false isSigner: false }, { name: 'chainConfig' isMut: true isSigner: false }, { name: 'authority' isMut: true isSigner: true }, { name: 'systemProgram' isMut: false isSigner: false }, ] args: [ { name: 'remoteChainSelector' type: 'u64' }, { name: 'mint' type: 'publicKey' }, { name: 'cfg' type: { defined: 'RemoteConfig' } }, ] }, { name: 'appendRemotePoolAddresses' accounts: [ { name: 'state' isMut: false isSigner: false }, { name: 'chainConfig' isMut: true isSigner: false }, { name: 'authority' isMut: true isSigner: true }, { name: 'systemProgram' isMut: false isSigner: false }, ] args: [ { name: 'remoteChainSelector' type: 'u64' }, { name: 'mint' type: 'publicKey' }, { name: 'addresses' type: { vec: { defined: 'RemoteAddress' } } }, ] }, { name: 'setChainRateLimit' accounts: [ { name: 'state' isMut: false isSigner: false }, { name: 'chainConfig' isMut: true isSigner: false }, { name: 'authority' isMut: true isSigner: true }, ] args: [ { name: 'remoteChainSelector' type: 'u64' }, { name: 'mint' type: 'publicKey' }, { name: 'inbound' type: { defined: 'RateLimitConfig' } }, { name: 'outbound' type: { defined: 'RateLimitConfig' } }, ] }, { name: 'setRateLimitAdmin' accounts: [ { name: 'state' isMut: true isSigner: false }, { name: 'authority' isMut: true isSigner: true }, ] args: [ { name: 'mint' type: 'publicKey' }, { name: 'newRateLimitAdmin' type: 'publicKey' }, ] }, { name: 'deleteChainConfig' accounts: [ { name: 'state' isMut: false isSigner: false }, { name: 'chainConfig' isMut: true isSigner: false }, { name: 'authority' isMut: true isSigner: true }, ] args: [ { name: 'remoteChainSelector' type: 'u64' }, { name: 'mint' type: 'publicKey' }, ] }, { name: 'configureAllowList' accounts: [ { name: 'state' isMut: true isSigner: false }, { name: 'mint' isMut: false isSigner: false }, { name: 'authority' isMut: true isSigner: true }, { name: 'systemProgram' isMut: false isSigner: false }, ] args: [ { name: 'add' type: { vec: 'publicKey' } }, { name: 'enabled' type: 'bool' }, ] }, { name: 'removeFromAllowList' accounts: [ { name: 'state' isMut: true isSigner: false }, { name: 'mint' isMut: false isSigner: false }, { name: 'authority' isMut: true isSigner: true }, { name: 'systemProgram' isMut: false isSigner: false }, ] args: [ { name: 'remove' type: { vec: 'publicKey' } }, ] }, { name: 'releaseOrMintTokens' accounts: [ { name: 'authority' isMut: false isSigner: true }, { name: 'offrampProgram' isMut: false isSigner: false docs: [ 'CHECK offramp program: exists only to derive the allowed offramp PDA', 'and the authority PDA.', ] }, { name: 'allowedOfframp' isMut: false isSigner: false docs: [ 'CHECK PDA of the router program verifying the signer is an allowed offramp.', "If PDA does not exist, the router doesn't allow this offramp", ] }, { name: 'state' isMut: false isSigner: false }, { name: 'tokenProgram' isMut: false isSigner: false }, { name: 'mint' isMut: true isSigner: false }, { name: 'poolSigner' isMut: false isSigner: false }, { name: 'poolTokenAccount' isMut: true isSigner: false }, { name: 'chainConfig' isMut: true isSigner: false }, { name: 'rmnRemote' isMut: false isSigner: false }, { name: 'rmnRemoteCurses' isMut: false isSigner: false }, { name: 'rmnRemoteConfig' isMut: false isSigner: false }, { name: 'receiverTokenAccount' isMut: true isSigner: false }, ] args: [ { name: 'releaseOrMint' type: { defined: 'ReleaseOrMintInV1' } }, ] returns: { defined: 'ReleaseOrMintOutV1' } }, { name: 'lockOrBurnTokens' accounts: [ { name: 'authority' isMut: false isSigner: true }, { name: 'state' isMut: false isSigner: false }, { name: 'tokenProgram' isMut: false isSigner: false }, { name: 'mint' isMut: true isSigner: false }, { name: 'poolSigner' isMut: false isSigner: false }, { name: 'poolTokenAccount' isMut: true isSigner: false }, { name: 'rmnRemote' isMut: false isSigner: false }, { name: 'rmnRemoteCurses' isMut: false isSigner: false }, { name: 'rmnRemoteConfig' isMut: false isSigner: false }, { name: 'chainConfig' isMut: true isSigner: false }, ] args: [ { name: 'lockOrBurn' type: { defined: 'LockOrBurnInV1' } }, ] returns: { defined: 'LockOrBurnOutV1' } }, ] accounts: [ { name: 'poolConfig' type: { kind: 'struct' fields: [ { name: 'version' type: 'u8' }, { name: 'selfServedAllowed' type: 'bool' }, { name: 'router' type: 'publicKey' }, { name: 'rmnRemote' type: 'publicKey' }, ] } }, { name: 'state' type: { kind: 'struct' fields: [ { name: 'version' type: 'u8' }, { name: 'config' type: { defined: 'BaseConfig' } }, ] } }, { name: 'chainConfig' type: { kind: 'struct' fields: [ { name: 'base' type: { defined: 'BaseChain' } }, ] } }, ] errors: [ { code: 6000 name: 'InvalidMultisig' msg: 'Invalid Multisig Mint' }, { code: 6001 name: 'MintAuthorityAlreadySet' msg: 'Mint Authority already set' }, { code: 6002 name: 'FixedMintToken' msg: 'Token with no Mint Authority' }, { code: 6003 name: 'UnsupportedTokenProgram' msg: 'Unsupported Token Program' }, { code: 6004 name: 'InvalidToken2022Multisig' msg: 'Invalid Multisig Account Data for Token 2022' }, { code: 6005 name: 'InvalidSPLTokenMultisig' msg: 'Invalid Multisig Account Data for SPL Token' }, { code: 6006 name: 'PoolSignerNotInMultisig' msg: 'Token Pool Signer PDA must be m times a signer of the Multisig' }, { code: 6007 name: 'MultisigMustHaveAtLeastTwoSigners' msg: 'Multisig must have more than 2 valid signers' }, { code: 6008 name: 'MultisigMustHaveMoreThanOneSigner' msg: 'Multisig must have more than one required signer' }, { code: 6009 name: 'InvalidMultisigOwner' msg: 'Multisig Owner must match Token Program ID' }, { code: 6010 name: 'InvalidMultisigThreshold' msg: 'Invalid multisig threshold: required signatures cannot exceed total signers' }, { code: 6011 name: 'InvalidMultisigThresholdTooHigh' msg: 'Invalid multisig m: required signatures cannot exceed the available for outside signers' }, ] } export const IDL: BurnmintTokenPool = { version: '1.6.3', name: 'burnmint_token_pool', instructions: [ { name: 'initGlobalConfig', accounts: [ { name: 'config', isMut: true, isSigner: false, }, { name: 'authority', isMut: true, isSigner: true, }, { name: 'systemProgram', isMut: false, isSigner: false, }, { name: 'program', isMut: false, isSigner: false, }, { name: 'programData', isMut: false, isSigner: false, }, ], args: [ { name: 'routerAddress', type: 'publicKey', }, { name: 'rmnAddress', type: 'publicKey', }, ], }, { name: 'updateSelfServedAllowed', accounts: [ { name: 'config', isMut: true, isSigner: false, }, { name: 'authority', isMut: false, isSigner: true, }, { name: 'program', isMut: false, isSigner: false, }, { name: 'programData', isMut: false, isSigner: false, }, ], args: [ { name: 'selfServedAllowed', type: 'bool', }, ], }, { name: 'updateDefaultRouter', accounts: [ { name: 'config', isMut: true, isSigner: false, }, { name: 'authority', isMut: false, isSigner: true, }, { name: 'program', isMut: false, isSigner: false, }, { name: 'programData', isMut: false, isSigner: false, }, ], args: [ { name: 'routerAddress', type: 'publicKey', }, ], }, { name: 'updateDefaultRmn', accounts: [ { name: 'config', isMut: true, isSigner: false, }, { name: 'authority', isMut: false, isSigner: true, }, { name: 'program', isMut: false, isSigner: false, }, { name: 'programData', isMut: false, isSigner: false, }, ], args: [ { name: 'rmnAddress', type: 'publicKey', }, ], }, { name: 'initialize', accounts: [ { name: 'state', isMut: true, isSigner: false, }, { name: 'mint', isMut: false, isSigner: false, }, { name: 'authority', isMut: true, isSigner: true, }, { name: 'systemProgram', isMut: false, isSigner: false, }, { name: 'program', isMut: false, isSigner: false, }, { name: 'programData', isMut: false, isSigner: false, }, { name: 'config', isMut: false, isSigner: false, }, ], args: [], }, { name: 'transferMintAuthorityToMultisig', accounts: [ { name: 'state', isMut: true, isSigner: false, }, { name: 'mint', isMut: true, isSigner: false, }, { name: 'tokenProgram', isMut: false, isSigner: false, }, { name: 'poolSigner', isMut: false, isSigner: false, }, { name: 'authority', isMut: false, isSigner: true, }, { name: 'newMultisigMintAuthority', isMut: false, isSigner: false, }, { name: 'program', isMut: false, isSigner: false, }, { name: 'programData', isMut: false, isSigner: false, }, ], args: [], }, { name: 'transferMintAuthorityToPdaSigner', accounts: [ { name: 'state', isMut: false, isSigner: false, }, { name: 'mint', isMut: true, isSigner: false, }, { name: 'tokenProgram', isMut: false, isSigner: false, }, { name: 'poolSigner', isMut: false, isSigner: false, }, { name: 'authority', isMut: false, isSigner: true, }, { name: 'currentMintAuthorityAccount', isMut: false, isSigner: false, }, { name: 'program', isMut: false, isSigner: false, }, { name: 'programData', isMut: false, isSigner: false, }, ], args: [], }, { name: 'typeVersion', docs: [ 'Returns the program type (name) and version.', 'Used by offchain code to easily determine which program & version is being interacted with.', '', '# Arguments', '* `ctx` - The context', ], accounts: [ { name: 'clock', isMut: false, isSigner: false, }, ], args: [], returns: 'string', }, { name: 'transferOwnership', accounts: [ { name: 'state', isMut: true, isSigner: false, }, { name: 'mint', isMut: false, isSigner: false, }, { name: 'authority', isMut: false, isSigner: true, }, ], args: [ { name: 'proposedOwner', type: 'publicKey', }, ], }, { name: 'acceptOwnership', accounts: [ { name: 'state', isMut: true, isSigner: false, }, { name: 'mint', isMut: false, isSigner: false, }, { name: 'authority', isMut: false, isSigner: true, }, ], args: [], }, { name: 'setRouter', accounts: [ { name: 'state', isMut: true, isSigner: false, }, { name: 'mint', isMut: false, isSigner: false, }, { name: 'authority', isMut: true, isSigner: true, }, { name: 'program', isMut: false, isSigner: false, }, { name: 'programData', isMut: false, isSigner: false, }, ], args: [ { name: 'newRouter', type: 'publicKey', }, ], }, { name: 'setRmn', accounts: [ { name: 'state', isMut: true, isSigner: false, }, { name: 'mint', isMut: false, isSigner: false, }, { name: 'authority', isMut: true, isSigner: true, }, { name: 'program', isMut: false, isSigner: false, }, { name: 'programData', isMut: false, isSigner: false, }, ], args: [ { name: 'rmnAddress', type: 'publicKey', }, ], }, { name: 'initializeStateVersion', accounts: [ { name: 'state', isMut: true, isSigner: false, }, ], args: [ { name: 'mint', type: 'publicKey', }, ], }, { name: 'initChainRemoteConfig', accounts: [ { name: 'state', isMut: false, isSigner: false, }, { name: 'chainConfig', isMut: true, isSigner: false, }, { name: 'authority', isMut: true, isSigner: true, }, { name: 'systemProgram', isMut: false, isSigner: false, }, ], args: [ { name: 'remoteChainSelector', type: 'u64', }, { name: 'mint', type: 'publicKey', }, { name: 'cfg', type: { defined: 'RemoteConfig', }, }, ], }, { name: 'editChainRemoteConfig', accounts: [ { name: 'state', isMut: false, isSigner: false, }, { name: 'chainConfig', isMut: true, isSigner: false, }, { name: 'authority', isMut: true, isSigner: true, }, { name: 'systemProgram', isMut: false, isSigner: false, }, ], args: [ { name: 'remoteChainSelector', type: 'u64', }, { name: 'mint', type: 'publicKey', }, { name: 'cfg', type: { defined: 'RemoteConfig', }, }, ], }, { name: 'appendRemotePoolAddresses', accounts: [ { name: 'state', isMut: false, isSigner: false, }, { name: 'chainConfig', isMut: true, isSigner: false, }, { name: 'authority', isMut: true, isSigner: true, }, { name: 'systemProgram', isMut: false, isSigner: false, }, ], args: [ { name: 'remoteChainSelector', type: 'u64', }, { name: 'mint', type: 'publicKey', }, { name: 'addresses', type: { vec: { defined: 'RemoteAddress', }, }, }, ], }, { name: 'setChainRateLimit', accounts: [ { name: 'state', isMut: false, isSigner: false, }, { name: 'chainConfig', isMut: true, isSigner: false, }, { name: 'authority', isMut: true, isSigner: true, }, ], args: [ { name: 'remoteChainSelector', type: 'u64', }, { name: 'mint', type: 'publicKey', }, { name: 'inbound', type: { defined: 'RateLimitConfig', }, }, { name: 'outbound', type: { defined: 'RateLimitConfig', }, }, ], }, { name: 'setRateLimitAdmin', accounts: [ { name: 'state', isMut: true, isSigner: false, }, { name: 'authority', isMut: true, isSigner: true, }, ], args: [ { name: 'mint', type: 'publicKey', }, { name: 'newRateLimitAdmin', type: 'publicKey', }, ], }, { name: 'deleteChainConfig', accounts: [ { name: 'state', isMut: false, isSigner: false, }, { name: 'chainConfig', isMut: true, isSigner: false, }, { name: 'authority', isMut: true, isSigner: true, }, ], args: [ { name: 'remoteChainSelector', type: 'u64', }, { name: 'mint', type: 'publicKey', }, ], }, { name: 'configureAllowList', accounts: [ { name: 'state', isMut: true, isSigner: false, }, { name: 'mint', isMut: false, isSigner: false, }, { name: 'authority', isMut: true, isSigner: true, }, { name: 'systemProgram', isMut: false, isSigner: false, }, ], args: [ { name: 'add', type: { vec: 'publicKey', }, }, { name: 'enabled', type: 'bool', }, ], }, { name: 'removeFromAllowList', accounts: [ { name: 'state', isMut: true, isSigner: false, }, { name: 'mint', isMut: false, isSigner: false, }, { name: 'authority', isMut: true, isSigner: true, }, { name: 'systemProgram', isMut: false, isSigner: false, }, ], args: [ { name: 'remove', type: { vec: 'publicKey', }, }, ], }, { name: 'releaseOrMintTokens', accounts: [ { name: 'authority', isMut: false, isSigner: true, }, { name: 'offrampProgram', isMut: false, isSigner: false, docs: [ 'CHECK offramp program: exists only to derive the allowed offramp PDA', 'and the authority PDA.', ], }, { name: 'allowedOfframp', isMut: false, isSigner: false, docs: [ 'CHECK PDA of the router program verifying the signer is an allowed offramp.', "If PDA does not exist, the router doesn't allow this offramp", ], }, { name: 'state', isMut: false, isSigner: false, }, { name: 'tokenProgram', isMut: false, isSigner: false, }, { name: 'mint', isMut: true, isSigner: false, }, { name: 'poolSigner', isMut: false, isSigner: false, }, { name: 'poolTokenAccount', isMut: true, isSigner: false, }, { name: 'chainConfig', isMut: true, isSigner: false, }, { name: 'rmnRemote', isMut: false, isSigner: false, }, { name: 'rmnRemoteCurses', isMut: false, isSigner: false, }, { name: 'rmnRemoteConfig', isMut: false, isSigner: false, }, { name: 'receiverTokenAccount', isMut: true, isSigner: false, }, ], args: [ { name: 'releaseOrMint', type: { defined: 'ReleaseOrMintInV1', }, }, ], returns: { defined: 'ReleaseOrMintOutV1', }, }, { name: 'lockOrBurnTokens', accounts: [ { name: 'authority', isMut: false, isSigner: true, }, { name: 'state', isMut: false, isSigner: false, }, { name: 'tokenProgram', isMut: false, isSigner: false, }, { name: 'mint', isMut: true, isSigner: false, }, { name: 'poolSigner', isMut: false, isSigner: false, }, { name: 'poolTokenAccount', isMut: true, isSigner: false, }, { name: 'rmnRemote', isMut: false, isSigner: false, }, { name: 'rmnRemoteCurses', isMut: false, isSigner: false, }, { name: 'rmnRemoteConfig', isMut: false, isSigner: false, }, { name: 'chainConfig', isMut: true, isSigner: false, }, ], args: [ { name: 'lockOrBurn', type: { defined: 'LockOrBurnInV1', }, }, ], returns: { defined: 'LockOrBurnOutV1', }, }, ], accounts: [ { name: 'poolConfig', type: { kind: 'struct', fields: [ { name: 'version', type: 'u8', }, { name: 'selfServedAllowed', type: 'bool', }, { name: 'router', type: 'publicKey', }, { name: 'rmnRemote', type: 'publicKey', }, ], }, }, { name: 'state', type: { kind: 'struct', fields: [ { name: 'version', type: 'u8', }, { name: 'config', type: { defined: 'BaseConfig', }, }, ], }, }, { name: 'chainConfig', type: { kind: 'struct', fields: [ { name: 'base', type: { defined: 'BaseChain', }, }, ], }, }, ], errors: [ { code: 6000, name: 'InvalidMultisig', msg: 'Invalid Multisig Mint', }, { code: 6001, name: 'MintAuthorityAlreadySet', msg: 'Mint Authority already set', }, { code: 6002, name: 'FixedMintToken', msg: 'Token with no Mint Authority', }, { code: 6003, name: 'UnsupportedTokenProgram', msg: 'Unsupported Token Program', }, { code: 6004, name: 'InvalidToken2022Multisig', msg: 'Invalid Multisig Account Data for Token 2022', }, { code: 6005, name: 'InvalidSPLTokenMultisig', msg: 'Invalid Multisig Account Data for SPL Token', }, { code: 6006, name: 'PoolSignerNotInMultisig', msg: 'Token Pool Signer PDA must be m times a signer of the Multisig', }, { code: 6007, name: 'MultisigMustHaveAtLeastTwoSigners', msg: 'Multisig must have more than 2 valid signers', }, { code: 6008, name: 'MultisigMustHaveMoreThanOneSigner', msg: 'Multisig must have more than one required signer', }, { code: 6009, name: 'InvalidMultisigOwner', msg: 'Multisig Owner must match Token Program ID', }, { code: 6010, name: 'InvalidMultisigThreshold', msg: 'Invalid multisig threshold: required signatures cannot exceed total signers', }, { code: 6011, name: 'InvalidMultisigThresholdTooHigh', msg: 'Invalid multisig m: required signatures cannot exceed the available for outside signers', }, ], } // generate:end