{"version":3,"sources":["../src/index.ts"],"names":["payer"],"mappings":";;;;AA2BO,SAAS,MAAMA,MAAAA,EAA0B;AAC5C,EAAA,OAAO,CAAmB,MAAA,KAAc,YAAA,CAAa,QAAQ,EAAE,KAAA,EAAAA,QAAO,CAAA;AAC1E;AAaO,SAAS,cAAA,GAAiB;AAC7B,EAAA,OAAO,OAAyB,WAAc,YAAA,CAAa,MAAA,EAAQ,EAAE,KAAA,EAAO,MAAM,qBAAA,EAAsB,EAAG,CAAA;AAC/G;AAkBO,SAAS,sBAAsB,MAAA,EAAkB;AACpD,EAAA,MAAM,uBAAuB,cAAA,EAAe;AAC5C,EAAA,OAAO,OAAoC,MAAA,KAAc;AACrD,IAAA,MAAM,eAAA,GAAkB,MAAM,oBAAA,CAAwB,MAAM,CAAA;AAC5D,IAAA,IAAI,CAAC,gBAAgB,OAAA,EAAS;AAC1B,MAAA,MAAM,IAAI,MAAM,kEAAkE,CAAA;AAAA,IACtF;AACA,IAAA,MAAM,eAAA,CAAgB,OAAA,CAAQ,eAAA,CAAgB,KAAA,CAAM,SAAS,MAAM,CAAA;AACnE,IAAA,OAAO,eAAA;AAAA,EACX,CAAA;AACJ;AAiBO,SAAS,cAAc,IAAA,EAAc;AAKxC,EAAA,OAAO,OAAyB,MAAA,KAAc;AAC1C,IAAA,MAAM,QAAQ,IAAA,CAAK,KAAA,CAAM,YAAA,CAAa,IAAA,EAAM,OAAO,CAAC,CAAA;AACpD,IAAA,MAAMA,SAAQ,MAAM,4BAAA,CAA6B,IAAI,UAAA,CAAW,KAAK,CAAC,CAAA;AACtE,IAAA,OAAO,YAAA,CAAa,MAAA,EAAQ,EAAE,KAAA,EAAAA,QAAO,CAAA;AAAA,EACzC,CAAA;AACJ;AA8BO,SAAS,sBAAsB,aAAA,EAA8C;AAChF,EAAA,OAAO,CAA8B,MAAA,KAA2D;AAC5F,IAAA,IAAI,aAAA,EAAe;AACf,MAAA,OAAO,QAAQ,OAAA,CAAQ,KAAA,CAAM,aAAa,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,IACvD;AACA,IAAA,OAAO,qBAAA,CAAsB,QAAA,CAAS,aAAgB,CAAC,EAAE,MAAM,CAAA;AAAA,EACnE,CAAA;AACJ","file":"index.node.mjs","sourcesContent":["import { readFileSync } from 'node:fs';\n\nimport {\n    ClientWithAirdrop,\n    ClientWithPayer,\n    createKeyPairSignerFromBytes,\n    extendClient,\n    ExtendedClient,\n    generateKeyPairSigner,\n    Lamports,\n    lamports,\n    TransactionSigner,\n} from '@solana/kit';\n\n/**\n * Sets the provided `TransactionSigner` as the `payer` property on the client.\n *\n * @param payer - The `TransactionSigner` to set as the payer.\n *\n * @deprecated Use `payer` from `@solana/kit-plugin-signer` instead.\n * ```ts\n * import { createClient } from '@solana/kit';\n * import { payer } from '@solana/kit-plugin-signer';\n *\n * const client = createClient().use(payer(mySigner));\n * ```\n */\nexport function payer(payer: TransactionSigner) {\n    return <T extends object>(client: T) => extendClient(client, { payer });\n}\n\n/**\n * Generates a new `KeyPairSigner` and sets it as the `payer` property on the client.\n *\n * @deprecated Use `generatedPayer` from `@solana/kit-plugin-signer` instead.\n * ```ts\n * import { createClient } from '@solana/kit';\n * import { generatedPayer } from '@solana/kit-plugin-signer';\n *\n * const client = await createClient().use(generatedPayer());\n * ```\n */\nexport function generatedPayer() {\n    return async <T extends object>(client: T) => extendClient(client, { payer: await generateKeyPairSigner() });\n}\n\n/**\n * Generates a new `KeyPairSigner`, funds it with the specified\n * amount of lamports using the client's `airdrop` function,\n * and sets it as the `payer` property on the client.\n *\n * @param amount - The amount of lamports to airdrop to the generated payer.\n *\n * @deprecated Use `generatedPayerWithSol` from `@solana/kit-plugin-signer` instead.\n * ```ts\n * import { createClient, lamports } from '@solana/kit';\n * import { generatedPayerWithSol } from '@solana/kit-plugin-signer';\n *\n * const client = await createClient()\n *     .use(generatedPayerWithSol(lamports(10_000_000_000n)));\n * ```\n */\nexport function generatedPayerWithSol(amount: Lamports) {\n    const generatedPayerPlugin = generatedPayer();\n    return async <T extends ClientWithAirdrop>(client: T) => {\n        const clientWithPayer = await generatedPayerPlugin<T>(client);\n        if (!clientWithPayer.airdrop) {\n            throw new Error('generatedPayerWithSol requires an airdrop function on the client');\n        }\n        await clientWithPayer.airdrop(clientWithPayer.payer.address, amount);\n        return clientWithPayer;\n    };\n}\n\n/**\n * Reads a JSON file containing the byte array of a keypair,\n * creates a `KeyPairSigner` from those bytes, and sets it\n * as the `payer` property on the client.\n *\n * @param path - The file path to the JSON file containing the keypair bytes.\n *\n * @deprecated Use `payerFromFile` from `@solana/kit-plugin-signer` instead.\n * ```ts\n * import { createClient } from '@solana/kit';\n * import { payerFromFile } from '@solana/kit-plugin-signer';\n *\n * const client = await createClient().use(payerFromFile('path/to/keypair.json'));\n * ```\n */\nexport function payerFromFile(path: string) {\n    if (!__NODEJS__) {\n        throw new Error('payerFromFile is only supported in Node.js environments');\n    }\n\n    return async <T extends object>(client: T) => {\n        const bytes = JSON.parse(readFileSync(path, 'utf-8')) as number[];\n        const payer = await createKeyPairSignerFromBytes(new Uint8Array(bytes));\n        return extendClient(client, { payer });\n    };\n}\n\n/**\n * Uses the provided `TransactionSigner` as the `payer` if one is given.\n * Otherwise, generates a new `KeyPairSigner`, funds it with 100 SOL\n * using the client's `airdrop` function, and sets it as the `payer`.\n *\n * This is useful when you want to optionally accept a payer from the\n * caller but fall back to a generated and funded payer for convenience\n * (e.g. in testing or local development).\n *\n * @param explicitPayer - An optional `TransactionSigner` to use as the payer.\n *                        When `undefined`, a new payer is generated and airdropped 100 SOL.\n *\n * @deprecated Use `payer` and/or `generatedPayerWithSol` from `@solana/kit-plugin-signer` instead.\n * ```ts\n * import { createClient, lamports } from '@solana/kit';\n * import { solanaRpcConnection, rpcAirdrop } from '@solana/kit-plugin-rpc';\n * import { payer, generatedPayerWithSol } from '@solana/kit-plugin-signer';\n *\n * // With an explicit payer.\n * const client = createClient().use(payer(mySigner));\n *\n * // With a generated payer funded with SOL.\n * const client = await createClient()\n *     .use(solanaRpcConnection({ rpcUrl: 'http://127.0.0.1:8899' }))\n *     .use(rpcAirdrop())\n *     .use(generatedPayerWithSol(lamports(100_000_000_000n)));\n * ```\n */\nexport function payerOrGeneratedPayer(explicitPayer: TransactionSigner | undefined) {\n    return <T extends ClientWithAirdrop>(client: T): Promise<ExtendedClient<T, ClientWithPayer>> => {\n        if (explicitPayer) {\n            return Promise.resolve(payer(explicitPayer)(client));\n        }\n        return generatedPayerWithSol(lamports(100_000_000_000n))(client);\n    };\n}\n"]}